1

저장 프로 시저 GetSLAClass을 사용하여 아래와 같이 where 절에 대해 단일 값을 가져 오려고합니다. 또한 WRMaster (주 테이블) 값을 저장 프로 시저 매개 변수로 사용하려고합니다. 어떤 해결책이 있습니까? 올바른 데이터를 얻기 위해이 두 가지 작업을 수행하고 싶습니다. 하위 쿼리에서 저장 프로 시저를 사용하여 주 쿼리 데이터를 매개 변수로 사용하여 where 절의 값을 얻는 방법

오류 MSG

7
의 구문이 잘못 키워드 'EXEC'근처 메시지 156, 수준 15, 상태 1, 줄입니다.

메시지 레벨 102, 레벨 15, 상태 1, 줄 7
'.'근처의 구문이 잘못되었습니다. 여기

이이 작업을 수행 할 수있는 방법입니다

SELECT 
    * 
FROM 
    WRMaster W 
WHERE 
    DATEDIFF(minute, W.AckedDateTime, W.ResolvedDateTime) <= 
     (SELECT Priority 
     FROM FMSLAClassPriorityMap 
     WHERE SLAClassKey = (EXEC dbo.GetSLAClass W.LocationKey, W.ServicCategoryKey, W.ProblemTypeKey, NULL, '')) 
WHERE WRKey=4 
+0

입니다 예 저장 반환 값과 입력 및 출력을 할 수 있습니다 절차 매개 변수를 사용하면 사용자가 묻는 것을 정확하게 수행 할 수 있습니다. –

+0

이렇게 할 수 있을지 잘 모르겠습니다. 그런 작업을위한 다른 솔루션이나 방법이 있습니까? –

+0

예 저장 프로 시저를 읽으십시오. –

답변

1

(현재 작동하지 않는) 내 SQL 쿼리,

Declare 
@lk as int, 
@sck as int, 
@pt as int, 
@slaclass as int 

select @lk = LocationKey from WRMaster where WRKey=4 
select @sck = ServicecategoryKey from WRMaster where WRKey=4 
select @pt = ProblemKey from WRMaster where WRKey=4 

EXEC dbo.GetSLAClassOutput @lk,@sck,@pt,NULL,'', @slaclass output 

SELECT * 
FROM WRMaster W 
WHERE DATEDIFF(minute, W.AckedDateTime, W.ResolvedDateTime)<= 
(
    SELECT Priority 
    FROM FMSLAClassPriorityMap 
    WHERE SLAClassKey=(@slaclass) and PriorityKey = W.PriorityKey 
) 
where WRKey=4 
+1

SP에 출력 매개 변수 사용 - https://docs.microsoft.com/en-us/sql/connect/jdbc/using-a-stored-procedure- with-output-parameters –

+0

특정 WRKey 값에 대해 WRMaster에 한 행만 있습니까? 이 경우 저장 프로 시저 내부의 내용에 따라 성능이 크게 달라질 수 있습니다 (호출 오버 헤드가 있지만이 경우에는 무시할 만합니다). 'select @lk = LocationKey, @sck = ServicecategoryKey, @pt = WRMaster의 ProblemKey, WRKey = 4'와 같은 초기 선택을 하나의 단축키로 단축 할 수 있습니다. 어쨌든, 성능 측면에서 볼 때 항상 인라인하는 것이 가장 좋습니다. 인라인 테이블 UDF와 매우 비슷합니다. 그 외 모든 것은 RBAR 기반으로 실행됩니다. – dean

+0

@dean, quires을 가져 주셔서 감사합니다,이 여러 가지 방법으로 이것을 이해할 수있는 방법이 있습니다, 그 나의 실수,이 답변은 내 시나리오에 대해서만 maching입니다, 나는 WRKey를 전달합니다. –