私は、MS-Access 2010 フロントエンドでストアド プロシージャを呼び出し、MS-SQl サーバー 2008 バックエンドでストアド プロシージャのスクリプトを適用して作業しています。入力パラメーターが 2 つの結合されたテーブルの値と一致する TestID を取得するストアド プロシージャを作成しました。私の問題は、select ステートメントが出力パラメーターで返すものをキャプチャしようとしています。ここに私のSQLストアドプロシージャがあります
CREATE PROCEDURE upGetTestIDForAnalyte @WOID nvarchar(60), @SampleID nvarchar(60),@Analyte nvarchar(60), @RecordsAffected int OUT
AS
SELECT TestID = t1.TestID
FROM tblWOSampleTest t1
JOIN tblTest t2
ON t1.TestID=t2.TestID;
WHERE @WOID = t1.WOID AND @SampleID = t1.SampleID AND @Analyte = t2.Analyte
set @RecordsAffected = @@Identity
GO
それを行う方法をいくつか調査しましたが、SETステートメントを使用する必要があるようですが、値を取得する方法が本当にわかりません。この例では、常にゼロが返されます。
私はおそらくこのようなものがうまくいくだろうと考えていました:
CREATE PROCEDURE upGetTestIDForAnalyte @WOID nvarchar(60), @SampleID nvarchar(60),@Analyte nvarchar(60), @RecordsAffected int OUT
AS
SELECT @RecordsAffected = (SELECT TestID = t1.TestID
FROM tblWOSampleTest t1
JOIN tblTest t2
ON t1.TestID=t2.TestID;
WHERE @WOID = t1.WOID AND @SampleID = t1.SampleID AND @Analyte = t2.Analyte)
GO
しかし、それもうまくいきませんでした。SELECT ステートメントの戻り値を変数に格納する方法はありますか?