4

关于将 ascope_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()直接作为输入参数传递失败的原因是什么?

4

1 回答 1

4

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

于 2012-06-06T14:25:57.550 回答