我想在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存储过程的结果返回给.Net
- 4. 如何将存储过程返回的XML放入变量中?
- 5. 如何从SQL Server存储过程返回值到nHibernate中?
- 6. 在存储过程中将变量插入到SQL Server表中
- 7. SQL Server通过存储过程将表返回到MS Access
- 8. 如何返回SQL Server和WebAPI2中的存储过程列表
- 9. PHP返回存储过程的输出
- 10. SQL Server存储过程城市返回
- 11. 将变量输出存储到变量
- 12. SQL Server存储过程参数输出
- 13. 为什么SQL Server存储过程中的输出参数保持返回null?
- 14. SQL Server存储过程声明变量
- 15. 如何将存储过程的输出存储到磁盘上
- 16. 由存储过程返回的PL/SQL打印输出游标
- 17. ms sql存储过程返回的数据没有输出
- 18. 的SQL Server:存储过程到临时表变量的值
- 19. 从存储过程返回变量MySQL
- 20. 必须声明SQL Server存储过程中的标量变量
- 21. 如何将表变量传递给SQL-Server 2014中的存储过程
- 22. 存储过程输出变量
- 23. 如何将grep输出存储到循环内的变量中?
- 24. 如何将wget的输出存储到变量中
- 25. 如何在sql server中使用存储过程将变量名存储在变量中?
- 26. 从SQL Server 2008输出到C#通过ODBC存储过程
- 27. 如何从SQL Server存储过程返回多个数据表?
- 28. 如何使用pyodbc获取SQL Server存储过程返回值?
- 29. SQL Server存储过程存储返回值
- 30. 在存储过程中的SQL Server返回值
是什么你的存储过程返回?单一的价值?结果集? – 2012-08-15 07:07:25