我想在SQL Server中執行存儲過程並將輸出分配給變量(它會返回單個值)?如何將存儲過程的輸出返回到sql server中的變量
37
A
回答
79
這取決於你想返回的信息的性質。
如果它是一個整數值,您可以使用return
聲明
create proc myproc
as
begin
return 1
end
go
declare @i int
exec @i = myproc
如果你有一個非整數值,或者一些標量值,你可以使用輸出參數
create proc myproc
@a int output,
@b varchar(50) output
as
begin
select @a = 1, @b='hello'
end
go
declare @i int, @j varchar(50)
exec myproc @i output, @j output
如果你想返回一個數據集,你可以使用insert exec
create proc myproc
as
begin
select name from sysobjects
end
go
declare @t table (name varchar(100))
insert @t (name)
exec myproc
你甚至可以返回遊標不過這只是可怕,所以我不舉一個例子:)
7
您可以在存儲過程中使用return
語句來返回整數狀態碼(並且只能是整數類型)。按照慣例,返回值爲零用於成功。
如果沒有明確設置return
,則存儲過程返回零。
CREATE PROCEDURE GetImmediateManager
@employeeID INT,
@managerID INT OUTPUT
AS
BEGIN
SELECT @managerID = ManagerID
FROM HumanResources.Employee
WHERE EmployeeID = @employeeID
if @@rowcount = 0 -- manager not found?
return 1;
END
你這樣調用它:
DECLARE @return_status int;
DECLARE @managerID int;
EXEC @return_status = GetImmediateManager 2, @managerID output;
if @return_status = 1
print N'Immediate manager not found!';
else
print N'ManagerID is ' + @managerID;
go
您應該使用只有狀態代碼返回值。要返回數據,您應該使用輸出參數。
如果要返回數據集,請使用類型爲cursor
的輸出參數。
+3
@downvoter,你介意解釋什麼是錯的? – 2012-08-15 07:48:07
3
使用此代碼,可以正常使用
CREATE PROCEDURE [dbo].[sp_delete_item]
@ItemId int = 0
@status bit OUT
AS
Begin
DECLARE @cnt int;
DECLARE @status int =0;
SET NOCOUNT OFF
SELECT @cnt =COUNT(Id) from ItemTransaction where ItemId = @ItemId
if(@cnt = 1)
Begin
return @status;
End
else
Begin
SET @status =1;
return @status;
End
END
執行SP
DECLARE @statuss bit;
EXECUTE [dbo].[sp_delete_item] 6, @statuss output;
PRINT @statuss;
相關問題
- 1. 如何從SQL Server存儲過程返回行和變量
- 2. 從SQL Server存儲過程獲取值輸出到變量
- 3. SQL Server 2008爲輸出值返回空值的存儲過程
- 4. SQL Server存儲過程的返回值
- 5. 如何將Sql Server存儲過程的結果返回給.Net
- 6. 如何將存儲過程返回的XML放入變量中?
- 7. 如何從SQL Server存儲過程返回值到nHibernate中?
- 8. 存儲過程中的多個存儲過程,只返回第一個存儲過程輸出變量
- 9. 在存儲過程中將變量插入到SQL Server表中
- 10. SQL Server通過存儲過程將表返回到MS Access
- 11. 如何將sql結果存儲到sql server 2008中的變量
- 12. 存儲過程輸出值到變量
- 13. 如何返回SQL Server和WebAPI2中的存儲過程列表
- 14. 如何將SQL Server存儲過程結果返回給Excel
- 15. PHP返回存儲過程的輸出
- 16. SQL Server存儲過程:返回
- 17. SQL Server存儲過程返回null
- 18. SQL Server存儲過程返回'失敗'
- 19. SQL Server存儲過程城市返回
- 20. SQL Server存儲過程 - 輸出參數
- 21. SQL Server存儲過程參數輸出
- 22. 將變量輸出存儲到變量
- 23. 爲什麼SQL Server存儲過程中的輸出參數保持返回null?
- 24. SQL Server存儲過程聲明變量
- 25. 如何將存儲過程的輸出存儲到磁盤上
- 26. 如何將Netezza存儲過程的返回值捕獲到變量中?
- 27. 由存儲過程返回的PL/SQL打印輸出遊標
- 28. 如何將存儲過程返回值存儲在表或變量中
- 29. 如何統計存儲過程返回的結果集的數量? (SQL Server 2012)
- 30. ms sql存儲過程返回的數據沒有輸出
是什麼你的存儲過程返回?單一的價值?結果集? – 2012-08-15 07:07:25