분기 구문 작업하기

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 is true.
]

END IF;
Copy

IF 문에서:

  • 추가 조건을 지정해야 하는 경우 각 조건에 대한 ELSEIF 절을 추가합니다.

  • true로 평가되는 조건이 없는 경우 실행할 문을 지정하려면 ELSE 절을 추가합니다.

  • ELSEIFELSE 절은 선택 사항입니다.

다음은 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;
Copy

참고: SnowSQL 또는 Classic Console 을 사용하는 경우 대신 다음 예를 사용하십시오(SnowSQL 및 Classic Console 에서 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;
$$
;
Copy

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 ] ;
Copy

Snowflake는 value_n_of_expressionexpression_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;
Copy

참고: SnowSQL 또는 Classic Console 을 사용하는 경우 대신 다음 예를 사용하십시오(SnowSQL 및 Classic Console 에서 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;
$$
;
Copy

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 ] ;
Copy

예를 들어, 다음 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;
Copy

참고: SnowSQL 또는 Classic Console 을 사용하는 경우 대신 다음 예를 사용하십시오(SnowSQL 및 Classic Console 에서 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;
$$
;
Copy

CASE 문에 대한 전체 구문 및 세부 사항은 CASE(Snowflake Scripting) 섹션을 참조하십시오.