2014-06-24 5 views
0

MS-Access 2010 프론트 엔드에서 저장 프로 시저 및 MS-SQl 서버 2008 백엔드를 사용하여 저장 프로 시저에 대한 스크립트를 적용합니다. 입력 매개 변수가 두 조인 된 테이블의 값과 일치하는 TestID를 검색하는 저장 프로 시저를 만들었습니다. 내 문제는 select 문이 출력 매개 변수로 반환하는 값을 캡처하려고합니다. 여기 내 SQL은 절차 Select 문의 결과와 동일하게 출력 매개 변수 설정

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 문을 사용 해봐야 할 것 같습니다하지만 값을 캡처하는 방법 정말 모르겠어요. 이 예제는 항상 0을 반환합니다.

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 문 반환 값을 변수에 저장하는 방법이 있습니까?

+1

각 조건 [@WOID] = t1.WOID 및 [@SampleID] = t1.SampleID에 대해 하나의 testId 만 반환됩니까? [@Analyte] = t2.Analyte? testID 또는 조건과 일치하는 행 수를 찾고 있습니까? – TMNT2014

+0

반환되는 testId는 하나뿐입니다. 나는 그 특정한 testID를 찾고있다. – VictoriaJay

답변

2

당신이 시험 ID를 돌아보고하고 일치 기준에 대해 하나 개의 시험 ID를 제공하는 경우 - 당신은 단지 당신의 선택 문으로를 사용할 수 있습니다 - 또한

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 

, 당신은 아마 원하는 것 @RecordsAffected라는 이름이 실제로 무엇을 의미하는지에 대한 잘못된 표시를하기 때문에 Output 매개 변수의 이름을 (@OutputTestId 또는 @TestId)로 바꿉니다.