私はこの値を取得する必要がある他のストアドプロシージャから値を呼び出すストアドプロシージャを持っています。呼び出しストアドプロシージャはトランザクション内にあり、値を返す(実際には値を作成し、それ以外のprocが渡されないテーブルに格納する)ストアドプロシージャは、独自のトランザクション内ではなく、呼び出し元のトランザクションの一部になります。ストアドプロシージャの戻り値をSQLの変数に代入する最も良い方法は何ですか?
これは、ストアドプロシージャの戻り値を取得し、呼び出し側のプロシージャの変数に格納する最も効率的な方法は何ですか?
現在、私は以下のことがあり、非常に非効率かどうか疑問に思っていますか?
DECLARE @tmpNewValue TABLE (newvalue int)
INSERT INTO @tmpNewValue EXEC GetMyValue
DECLARE @localVariable int
SET @localVariable = (SELECT TOP 1 newvalue FROM @tmpNewValue)
もっと簡単な方法はありませんか?これは高価なものではありませんか?
保存されたprocに出力パラメータがありません。ただ値を返します。出力パラメータを使用する方が高速でしょうか?
declare @localVariable int
exec @localVariable =GetMyValue
select @localVariable
興味深いが、構築物が有効であったことを知りませんでした。したがって、私が与えた例は、一時テーブルを作成することです。それが何万回も呼ばれていないと、それは非常に非効率的か、それとも非常に顕著ではないでしょうか? – ApplePieIsGood
あなたのテーブルはテーブル変数なので、すべてがメモリ内にあるはずです。あなたのシステム上でテストを実行してみて、その違いを測定してみませんか? – JoshBerke