我想在SQL Server中执行存储过程,并将输出分配给变量(它返回一个值)?

最佳答案

这取决于您要返回的信息的性质。

如果是单个整数值,则可以使用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

您甚至可以返回一个游标,但这太可怕了,所以我不举一个例子:)

09-06 02:12