0

署名を変更できない sproc があり、最後の行に SELECT ステートメントがあります。

SELECT userid = @userid

@userid は sproc 内で宣言されます (渡されません)。sproc の外の変​​数で userid の値を取得する方法はありますか?

最後の行を変更して 2 つの値をキャプチャする場合:

SELECT userid = @userid, somevar = @somevar

この sproc を使用している既存のコード パス (.NET で行われている呼び出しなど) に影響しますか? そうでない場合、sproc の外で 2 つの値を取得するにはどうすればよいですか?

これらのキャプチャはすべて、アプリケーション言語ではなく SQL で行われます。

4

1 に答える 1

2

そのような SELECT を行うストアド プロシージャは、実際には戻り値を送り返すのではなく、結果セットを送り返します。SQL でそれをキャプチャする 1 つの方法は、結果を一時テーブルに挿入することです。

CREATE TABLE #MyTemp 
  (UserId INT, 
  SomeVar VARCHAR(50))

INSERT #MyTemp
  EXEC MySproc

この時点で、#MyTemp からローカル変数に SELECT できます。

結果に別の列を追加することで既存のアプリケーション コードが壊れるかどうかは、「状況次第」です。

于 2013-01-03T22:31:21.167 に答える