【问题标题】:How do I get identity from one sproc and pass it in to another sproc?如何从一个存储过程中获取身份并将其传递给另一个存储过程?
【发布时间】:2009-04-21 14:08:24
【问题描述】:

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

@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 中做到这一点?

谢谢

【问题讨论】:

    标签: sql-server stored-procedures


    【解决方案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
    

    您也可以使用局部变量来保存结果

    例如

    create proc somesample(@in int)
    as
    Begin
        select @in * 2
    End 
    
    declare @var int
    exec @var = somesample 1
    print @var
    2
    

    【讨论】:

    • np,如果您有任何问题,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 2011-04-26
    相关资源
    最近更新 更多