2014-03-31 4 views
0

나는 T-SQLSQL 서버 2008 CASE 문은

SELECT CASE @H_CNT 
WHEN 2 THEN 
@H_VAR_1 = @H_VALUE_1 
WHEN 3 THEN 
@H_VAR_2 = @H_VALUE_2 
END 

그러나 위의 문이 인정되지 않고 쇼에서이 같은 유휴 문을 찾고는 SQL 서버 2008

을 사용하고 있습니다 오류. 여기

+1

'CASE'는 T-SQL에서 ** 표현 ** - 그것은 값 (문자 또는 SQL 변수를) 반환 할 수는 있지만, ** ** 코드 블록을 실행할 수 없습니다 ** –

+0

@ user3481294 오류 메시지를 포함 시키려면 게시물을 편집하십시오. 그러면 문제의 배경을 알리고 다른 사람들이 대답에 집중할 수있게됩니다. –

답변

1
SELECT @H_VAR_1 = CASE WHEN @H_CNT = 2 THEN @H_VALUE_1 ELSE @H_VAR_1 END, 
     @H_VAR_2 = CASE WHEN @H_CNT = 3 THEN @H_VALUE_2 ELSE @H_VAR_2 END 
+0

이 기능이 작동하지 않습니까? 왜? –

+0

, 그것은 내 상황에 맞는 답을하지 않습니다 thanks.but 작동 기본적으로 모든 레코드에 대해 한 번 실행되는 if 문이 있습니다. 나는 ecery 레코드에 대해 실행되면 5 천만 개의 레코드를 가지므로 아마 코드를 더 빠르게 만들 수 있습니다. – user3481294

+0

아마도 where 조건을 추가하면됩니다. 그러나 테이블, 예제 데이터 또는 예상 출력 없이는 말하기가 어렵습니다. –

0

문제 문제는 무엇

당신이 CASE 문 내에서 할당 할 수 있다는 것입니다. 당신은CASE 문의 결과에서 할당 할 수

SELECT @H_VAR_1 = CASE @H_CNT WHEN 2 THEN @H_VALUE_1 ELSE @H_VAR_1 END, 
     @H_VAR_2 = CASE @H_CNT WHEN 3 THEN @H_VALUE_2 ELSE @H_VAR_2 END 
+0

위대하다, 내가 알고 싶은게 전부다. Roryap – user3481294