分岐構造の操作¶
Snowflakeスクリプトは、次の分岐構造をサポートしています。
IF-THEN-ELSEIF-ELSE
CASE
このトピックの内容:
IF ステートメント¶
Snowflakeスクリプトでは、 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;
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;注: SnowSQL または Classic Console を使用している場合は、代わりに次の例を使用します(SnowSQL および Classic Console でのSnowflakeスクリプトの使用 を参照)。
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; $$ ;
IF ステートメントの完全な構文と詳細については、 IF (Snowflakeスクリプト) をご参照ください。
CASE ステートメント¶
CASE
ステートメントは IF
ステートメントと同様に動作しますが、複数の条件を指定するためのより簡単な方法を提供します。
Snowflakeスクリプトは、次に挙げる2つの形式の CASE
ステートメントをサポートしています。
次のセクションでは、こうした異なるフォームの使用方法について説明します。
注釈
Snowflakeは、Snowflakeスクリプト以外において、キーワード 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;注: SnowSQL または Classic Console を使用している場合は、代わりに次の例を使用します(SnowSQL および Classic Console でのSnowflakeスクリプトの使用 を参照)。
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; $$ ;
CASE
ステートメントの完全な構文と詳細については、 CASE (Snowflakeスクリプト) をご参照ください。
検索された 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;注: SnowSQL または Classic Console を使用している場合は、代わりに次の例を使用します(SnowSQL および Classic Console でのSnowflakeスクリプトの使用 を参照)。
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; $$ ;
CASE
ステートメントの完全な構文と詳細については、 CASE (Snowflakeスクリプト) をご参照ください。