Sql server 将输出参数设置为与Select语句的结果相等

Sql server 将输出参数设置为与Select语句的结果相等,sql-server,stored-procedures,output-parameter,sql,Sql Server,Stored Procedures,Output Parameter,Sql,我使用MS Access 2010前端,在那里我调用了存储过程和MS-SQl server 2008后端,在那里我应用了存储过程的脚本。我创建了一个存储过程来检索TestID,其中输入参数与两个联接表中的值匹配。我的问题是尝试捕获select语句返回的输出参数。这是我的SQL存储过程 CREATE PROCEDURE upGetTestIDForAnalyte @WOID nvarchar(60), @SampleID nvarchar(60),@Analyte nvarchar(60), @R

我使用MS Access 2010前端,在那里我调用了存储过程和MS-SQl server 2008后端,在那里我应用了存储过程的脚本。我创建了一个存储过程来检索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语句的返回值存储到变量中?

如果要返回testId,并且假设匹配条件只有一个testId,则可以使用以下语句作为SELECT语句-

SELECT @RecordsAffected = 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

此外,您可能希望将输出参数重命名为类似(@OutputTestId或@TestId),因为@RecordsAffected名称错误地指示了它的实际用途。

每个条件[@WOID]=t1.WOID和[@SampleID]=t1.SampleID和[@Analyte]=t2.Analyte是否只返回一个TestId?您正在查找符合条件的testID或行数。只返回一个testID。我在找那个特别的睾丸