将scope_identity传递给存储过程

时间:2012-06-06 14:11:31

标签: sql-server tsql stored-procedures scope-identity

关于将scope_identity从子项传递到父存储过程的讨论很多。我有一个相反的情况,行插入父存储过程,我想将标识值传递给子存储过程。

但是,直接将scope_identity传递给子过程会在SQL Server Management Studio中生成解析错误。

create procedure parent
as
begin
   --  insert a record
   exec child scope_identity() -- this does not work
end

但是,使用局部变量可以解决问题。

create procedure parent
as
begin
   --  insert a record
   set @id = scope_identity()
   exec child @id -- this works
end

直接传递scope_identity()作为输入参数的原因是什么?

1 个答案:

答案 0 :(得分:3)

您无法将函数结果作为存储过程参数传递。您需要通过将结果保存到变量然后传递变量来执行后一种方法。