如何从一个sproc中获取身份并将其传递给另一个sproc?

时间:2009-04-21 14:08:25

标签: sql-server stored-procedures

大家好我正在寻找一种方法将生成的id从sproc传递到另一个sproc。

@name varchar(12),
@descript varchar(55)
@test_date date,
@test_result varchar(1)
BEGIN
   EXEC ts_create_item @name, @descript
END
if (@test_date is not null) or (isnull(@test_result_id,'')!='')
BEGIN
   Exec ts_update_test_results @itemid(generated from the sproc before), @test_date, @test_result
End

有没有办法在sql server中执行此操作?

由于

1 个答案:

答案 0 :(得分:1)

使用输出变量

所以你要声明前面的过程如

Create proc SomeProc (@parm1 int, @parm2 int, @id int = null OUTPUT)
as
Begin
  ...do some insert
  select @id = scope_identity()
End 

请记住,在声明和分配参数时必须同时指定OUTPUT 即

Exec someproc @parm1, @parm2, @id OUTPUT

或者,您可以使用局部变量来保存结果

e.g。

create proc somesample(@in int)
as
Begin
    select @in * 2
End 

declare @var int
exec @var = somesample 1
print @var
2