2016-11-17 2 views
-1

then then 문 중 하나에 여러 동작이있는 SQL 사례 문을 만들려고합니다. 이것이 가능하고 아래 질문 중이 부분 인 (@ItemCountVariable = a.ItemCount + 10)이 작동하지 않는지 확실하지 않지만 이것이 내가 달성하고자하는 것입니다. jarlh 그의 의견에 썼던 것처럼여러 동작이 포함 된 SQL Case 문

DECLARE @ItemCountVariable INT = 0 
... 

WHEN MATCHED THEN 
UPDATE SET Name = a.Name, 
      [Description] = a.[Description], 
      ItemCount = 
      (CASE WHEN ((a.ItemCount + 10) < 20) 
        THEN a.ItemCount + 10 
        ELSE a.ItemCount, @ItemCountVariable = a.ItemCount + 10 
      END) 
... 
+1

'사례'에 'END'가 없습니다. '@ItemCountVariable = a.ItemCount + 10'으로 무엇을하고 싶은지 제대로 설명 해주십시오. – Esty

+0

그건 대소 문자 표현이 아니고 대소 문자 구별이 아니야 ... – jarlh

답변

1

case는 표현이 아닌 문입니다.
이 경우는 단일 값을 반환하고 흐름 제어 요소로 사용할 수 없음을 의미합니다. 은 자세한 내용을 보려면 여기를 MSDN 공식 문서에 대한 case에서 관련있는 qoute입니다 :
SQL 서버가 CASE 식의 중첩의 10 레벨을 허용

비고 (I는 관련 부분을 굵게 표시했습니다).

CASE 식을 사용하여 Transact-SQL 문, 명령문 블록, 사용자 정의 함수 및 저장 프로 시저의 실행 흐름을 제어 할 수 없습니다. 흐름 제어 방법 목록은 Control-of-Flow Language (Transact-SQL).

+0

내가 생각한 것처럼. Zohar 링크 덕분에 가능하지 않습니다. – Shegute