CASE(Snowflake Scripting)

CASE 문은 여러 조건을 지정하는 방법을 제공합니다.

분기 구문에 대한 자세한 내용은 분기 구문 작업하기 섹션을 참조하십시오.

참고

Snowflake Scripting 구문은 Snowflake Scripting 블록 내에서만 유효합니다.

구문

간단한 CASE 문:

CASE ( <expression_to_match> )
    WHEN <expression> THEN
        <statement>;
        [ <statement>; ... ]
    [ WHEN ... ]
    [ ELSE
        <statement>;
        [ <statement>; ... ]
    ]
END [ CASE ] ;
Copy

여기서:

expression_to_match

일치시킬 식입니다.

expression

이 식의 값이 expression_to_match 의 값과 일치하면 이 절의 문이 실행됩니다.

statement

문은 다음 중 하나일 수 있습니다.

  • 단일 SQL 문(CALL 포함).

  • 제어 흐름 문(예: 루핑 또는 분기 문).

  • 중첩 블록.

검색된 CASE 문:

CASE
    WHEN <boolean_expression> THEN
        <statement>;
        [ <statement>; ... ]
    [ WHEN ... ]
    [ ELSE
        <statement>;
        [ <statement>; ... ]
    ]
END [ CASE ] ;
Copy

여기서:

boolean_expression

이 식이 TRUE로 평가되면 이 절의 문이 실행됩니다.

statement

문은 다음 중 하나일 수 있습니다.

  • 단일 SQL 문(CALL 포함).

  • 제어 흐름 문(예: 루핑 또는 분기 문).

  • 중첩 블록.

사용법 노트

  • CASE 의 둘 이상의 분기가 식과 일치하는 경우 첫 번째 분기만 사용됩니다.

  • 식을 비교할 때 NULL은 NULL과 일치하지 않습니다. NULL 값에 대해 명시적으로 테스트하려면 IS [ NOT ] NULL 을 사용하십시오.

이 예는 간단한 CASE 문을 보여줍니다.

CREATE PROCEDURE case_demo_01(v VARCHAR)
RETURNS VARCHAR
LANGUAGE SQL
AS
  BEGIN
    CASE (v)
      WHEN 'first choice' THEN
        RETURN 'one';
      WHEN 'second choice' THEN
        RETURN 'two';
      ELSE
        RETURN 'unexpected choice';
    END;
  END;
Copy

참고: SnowSQL 또는 Classic Console 을 사용하는 경우 대신 다음 예를 사용하십시오(SnowSQL 및 Classic Console 에서 Snowflake Scripting 사용하기 참조).

CREATE PROCEDURE case_demo_01(v VARCHAR)
RETURNS VARCHAR
LANGUAGE SQL
AS
$$
    BEGIN
        CASE (v)
            WHEN 'first choice' THEN
                RETURN 'one';
            WHEN 'second choice' THEN
                RETURN 'two';
            ELSE
                RETURN 'unexpected choice';
       END CASE;
    END;
$$
;
Copy

이 저장 프로시저를 호출하면 프로시저는 다음 출력을 생성합니다.

CALL case_demo_01('second choice');
+--------------+
| CASE_DEMO_01 |
|--------------|
| two          |
+--------------+
Copy

이 예는 검색된 CASE 문을 보여줍니다.

CREATE PROCEDURE case_demo_2(v VARCHAR)
RETURNS VARCHAR
LANGUAGE SQL
AS
  BEGIN
    CASE
      WHEN v = 'first choice' THEN
        RETURN 'one';
      WHEN v = 'second choice' THEN
        RETURN 'two';
      ELSE
        RETURN 'unexpected choice';
    END;
  END;
Copy

참고: SnowSQL 또는 Classic Console 을 사용하는 경우 대신 다음 예를 사용하십시오(SnowSQL 및 Classic Console 에서 Snowflake Scripting 사용하기 참조).

CREATE PROCEDURE case_demo_2(v VARCHAR)
RETURNS VARCHAR
LANGUAGE SQL
AS
$$
    BEGIN
        CASE 
            WHEN v = 'first choice' THEN
                RETURN 'one';
            WHEN v = 'second choice' THEN
                RETURN 'two';
            ELSE
                RETURN 'unexpected choice';
       END CASE;
    END;
$$
;
Copy

이 저장 프로시저를 호출하면 프로시저는 다음 출력을 생성합니다.

CALL case_demo_2('none of the above');
+-------------------+
| CASE_DEMO_2       |
|-------------------|
| unexpected choice |
+-------------------+
Copy