4

scope_identity子から親のストアドプロシージャにを渡すことについては、多くの議論があります。行が親ストアドプロシージャに挿入され、ID値を子ストアドプロシージャに渡したいという反対のシナリオがあります。

ただし、scope_identityを子プロシージャに直接渡すと、SQL ServerManagementStudioで解析エラーが発生します。

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 に答える