조건 논리 작업¶
Snowflake Scripting은 조건부 논리를 위한 다음과 같은 분기 구문을 지원합니다.
IF-THEN-ELSEIF-ELSE
CASE
IF 문¶
Snowflake Scripting에서는 IF 문을 사용하여 조건이 충족되면 문 세트를 실행할 수 있습니다.
IF 문의 구문은 다음과 같습니다.
IF (<condition>) THEN
-- Statements to execute if the <condition> is true.
[ ELSEIF ( <condition_2> ) THEN
-- Statements to execute if the <condition_2> is true.
]
[ ELSE
-- Statements to execute if none of the conditions are true.
]
END IF ;
IF 문에서:
추가 조건을 지정해야 하는 경우 각 조건에 대한 ELSEIF 절을 추가합니다.
조건 중 TRUE로 평가되는 조건이 없는 경우 실행할 문을 지정하려면 ELSE 절을 추가합니다.
ELSEIF 및 ELSE 절은 선택 사항입니다.
다음은 IF 문의 간단한 예입니다.
BEGIN
LET count := 1;
IF (count < 0) THEN
RETURN 'negative value';
ELSEIF (count = 0) THEN
RETURN 'zero';
ELSE
RETURN 'positive value';
END IF;
END;
참고: Python Connector 코드에서 SnowSQL, Classic Console 또는 execute_stream
또는 execute_string
메서드를 사용하는 경우 이 예제를 대신 사용하십시오(SnowSQL, Classic Console 및 Python Connector에서 Snowflake Scripting 사용하기 참조).
EXECUTE IMMEDIATE $$
BEGIN
LET count := 1;
IF (count < 0) THEN
RETURN 'negative value';
ELSEIF (count = 0) THEN
RETURN 'zero';
ELSE
RETURN 'positive value';
END IF;
END;
$$
;
+-----------------+
| anonymous block |
|-----------------|
| positive value |
+-----------------+
IF 문에 대한 전체 구문 및 세부 사항은 IF(Snowflake Scripting) 섹션을 참조하십시오.
CASE 문¶
CASE 문은 IF 문과 유사하게 작동하지만, 여러 조건을 지정하는 더 간단한 방법을 제공합니다.
Snowflake Scripting은 두 가지 형식의 CASE 문을 지원합니다.
다음 섹션에서는 이러한 다양한 형식을 사용하는 방법을 설명합니다.
참고
Snowflake는 Snowflake Scripting 외부에서 CASE 키워드의 다른 사용을 지원합니다(예: 조건식 CASE).
단순 CASE 문¶
간단한 CASE 문에서 사용자는 주어진 식의 다른 가능한 값에 대해 다른 분기(WHEN 절)를 정의합니다.
간단한 CASE 문의 구문은 다음과 같습니다.
CASE ( <expression_to_match> )
WHEN <value_1_of_expression> THEN
<statement>;
[ <statement>; ... ]
[ WHEN <value_2_of_expression> THEN
<statement>;
[ <statement>; ... ]
]
... -- Additional WHEN clauses for other possible values;
[ ELSE
<statement>;
[ <statement>; ... ]
]
END [ CASE ] ;
Snowflake는 value_n_of_expression
이 expression_to_match
의 값과 일치하는 첫 번째 분기를 실행합니다.
예를 들어, expression_to_evaluate
변수 값에 따라 다른 문을 실행하려고 한다고 가정합니다. 이 변수의 가능한 각 값(예: value a
, value b
등)에 대해 사용자는 실행할 문을 지정하는 WHEN 절을 정의할 수 있습니다.
DECLARE
expression_to_evaluate VARCHAR DEFAULT 'default value';
BEGIN
expression_to_evaluate := 'value a';
CASE (expression_to_evaluate)
WHEN 'value a' THEN
RETURN 'x';
WHEN 'value b' THEN
RETURN 'y';
WHEN 'value c' THEN
RETURN 'z';
WHEN 'default value' THEN
RETURN 'default';
ELSE
RETURN 'other';
END;
END;
참고: Python Connector 코드에서 SnowSQL, Classic Console 또는 execute_stream
또는 execute_string
메서드를 사용하는 경우 이 예제를 대신 사용하십시오(SnowSQL, Classic Console 및 Python Connector에서 Snowflake Scripting 사용하기 참조).
EXECUTE IMMEDIATE $$
DECLARE
expression_to_evaluate VARCHAR DEFAULT 'default value';
BEGIN
expression_to_evaluate := 'value a';
CASE (expression_to_evaluate)
WHEN 'value a' THEN
RETURN 'x';
WHEN 'value b' THEN
RETURN 'y';
WHEN 'value c' THEN
RETURN 'z';
WHEN 'default value' THEN
RETURN 'default';
ELSE
RETURN 'other';
END;
END;
$$
;
+-----------------+
| anonymous block |
|-----------------|
| x |
+-----------------+
CASE 문에 대한 전체 구문 및 세부 사항은 CASE(Snowflake Scripting) 섹션을 참조하십시오.
검색된 CASE 문¶
검색된 CASE 문에서 사용자는 각 분기(WHEN 절)에 대해 다른 조건을 지정합니다. Snowflake는 식이 TRUE로 평가되는 첫 번째 분기를 실행합니다.
검색된 CASE 문의 구문은 다음과 같습니다.
CASE
WHEN <condition_1> THEN
<statement>;
[ <statement>; ... ]
[ WHEN <condition_2> THEN
<statement>;
[ <statement>; ... ]
]
... -- Additional WHEN clauses for other possible conditions;
[ ELSE
<statement>;
[ <statement>; ... ]
]
END [ CASE ] ;
예를 들어, 다음 CASE 문을 실행하는 경우, 해당 분기가 식이 TRUE로 평가되는 첫 번째 분기이기 때문에 반환된 값은 a is x
입니다.
DECLARE
a VARCHAR DEFAULT 'x';
b VARCHAR DEFAULT 'y';
c VARCHAR DEFAULT 'z';
BEGIN
CASE
WHEN a = 'x' THEN
RETURN 'a is x';
WHEN b = 'y' THEN
RETURN 'b is y';
WHEN c = 'z' THEN
RETURN 'c is z';
ELSE
RETURN 'a is not x, b is not y, and c is not z';
END;
END;
참고: Python Connector 코드에서 SnowSQL, Classic Console 또는 execute_stream
또는 execute_string
메서드를 사용하는 경우 이 예제를 대신 사용하십시오(SnowSQL, Classic Console 및 Python Connector에서 Snowflake Scripting 사용하기 참조).
EXECUTE IMMEDIATE $$
DECLARE
a VARCHAR DEFAULT 'x';
b VARCHAR DEFAULT 'y';
c VARCHAR DEFAULT 'z';
BEGIN
CASE
WHEN a = 'x' THEN
RETURN 'a is x';
WHEN b = 'y' THEN
RETURN 'b is y';
WHEN c = 'z' THEN
RETURN 'c is z';
ELSE
RETURN 'a is not x, b is not y, and c is not z';
END;
END;
$$
;
+-----------------+
| anonymous block |
|-----------------|
| a is x |
+-----------------+
CASE 문에 대한 전체 구문 및 세부 사항은 CASE(Snowflake Scripting) 섹션을 참조하십시오.