关于将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()
作为输入参数失败的原因是什么?
不能
将函数结果作为存储过程参数传递。 您需要执行后一种方法,通过将结果保存到变量,然后传递变量。