ifelse 문 안에서 여러 값을 설정하는 방법은 무엇입니까?
아래 ifelse 문에서 두 개 이상의 값을 설정하려고 합니다. 하나의 값을 설정하면 작동하지만 두 개의 값을 설정하면 작동하지 않습니다.
DECLARE @test1 varchar(60);
DECLARE @test2 varchar(60);
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
SET @test1 = 'test1'
SET @test2 = 'test2'
ELSE
SET @test1 = 'testelse'
SET @test2 = 'testelse'
오류 메시지: "Msg 156, 레벨 15, 상태 1, 라인 9
키워드 'ELSE' 근처의 구문이 잘못되었습니다."
그러나 여러 개의 SET 변수를 차례로 가질 수 있으며, 이 코드는 다음과 같이 작동합니다.
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
SET @test1 = 'test1'
ELSE
SET @test1 = 'testelse'
SET @test2 = 'testelse'
어떻게 하면 제대로 할 수 있을까요?
if 조건에 두 개 이상의 문이 있는 경우 다음을 사용해야 합니다.BEGIN ... END
블록을 사용하여 캡슐화합니다.
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
BEGIN
SET @test1 = 'test1'
SET @test2 = 'test2'
END
ELSE
BEGIN
SET @test1 = 'testelse'
SET @test2 = 'testelse'
END
사용하다BEGIN
그리고.END
사용하는 것과 마찬가지로 다중 문 코드 블록을 표시합니다.{
그리고.}
다른 언어로, 다중을 배치할 수 있습니다.SET
문...
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
BEGIN
SET @test1 = 'test1'
SET @test2 = 'test2'
END
ELSE
BEGIN
SET @test1 = 'testelse'
SET @test2 = 'testelse'
END
또는 사용SELECT
변수에 값을 할당하여 단일 문에 둘 다 할당할 수 있으므로 사용할 필요가 없습니다.BEGIN
그리고.END
.
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
SELECT
@test1 = 'test1',
@test2 = 'test2'
ELSE
SELECT
@test1 = 'testelse',
@test2 = 'testelse'
다음에 여러 개의 문이 있는 경우IF
사용해야 합니다.begin
그리고.end
(예를 들어, c#의 표창과 유사함).
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
BEGIN
SET @test1 = 'test1'
SET @test2 = 'test2'
END
ELSE
BEGIN
SET @test1 = 'testelse'
SET @test2 = 'testelse'
END
첫 번째 평가판은 다음과 같이 분할되므로 이러한 동작은 타당합니다.
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
SET @test1 = 'test1'
SET @test2 = 'test2'
ELSE
SET @test1 = 'testelse'
그리고.ELSE
IF 문에 속하지 않으므로 실패합니다.
이렇게 하는 것을 고려해 보십시오.
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
BEGIN
SET @test1 = 'test1'
SET @test2 = 'test2'
END
ELSE
BEGIN
SET @test1 = 'testelse'
SET @test2 = 'testelse'
END
질문의 두 번째 식을 사용하면 항상 @test2 = 'testelse'가 실행됩니다. ELS가 첫 번째 식을 사용한 직후에 종료되기 때문입니다.
IF ((SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10)
SET @test1 = 'test1'
ELSE
SET @test1 = 'testelse'
-- IF is done evaluating here
SET @test2 = 'testelse'
IF 내에 여러 개의 식이 있는 경우 언제든지 BEGIN / END를 사용하여 식을 그룹화할 수 있습니다.
그러나 귀하의 경우 가장 간단한 방법은 다음과 같습니다.
IF (SELECT COUNT(*) FROM table WHERE table.Date > '2016-03-20') > 10
SELECT @test1 = 'test1', @test2 = 'test2'
ELSE
SELECT @test1 = 'testelse', @test2 = 'testelse'
언급URL : https://stackoverflow.com/questions/36279671/how-to-set-multiple-values-inside-an-if-else-statement
'sourcetip' 카테고리의 다른 글
CSV에 한 줄씩 쓰는 방법은 무엇입니까? (0) | 2023.08.16 |
---|---|
대응 기본 표준 시간대 및 형식 지정 옵션 (0) | 2023.08.16 |
UI 보기에 패딩 추가 (0) | 2023.08.16 |
CSS의 PNG 이미지에 대한 그림자 삭제 (0) | 2023.08.16 |
도커가 이미지를 새로 빌드하도록 강제하는 방법 (0) | 2023.08.16 |