■ はじめに
https://dk521123.hatenablog.com/entry/2022/12/23/223345
で、IF文を使ったが、 どうせなら、Snowflake の 条件分岐 をまとめておけば ストアドの基本的なことは、網羅されると思うので 今回でメモっておく。
目次
【0】Snowflake での条件分岐 【1】IF文 【2】CASE文 1)単純CASE式(simple case) 2)検索CASE式(searched case) 【3】サンプル 例1:IF文 例2:単純CASE式(simple case) 例3:検索CASE式(searched case)
【0】Snowflake での条件分岐
* Snowflake での条件分岐は、以下の通り。 => Snowflake においても、普通のSQLと変わらない
https://docs.snowflake.com/ja/developer-guide/snowflake-scripting/branch.html
~~~~~~~~~~~~~~ 【1】IF文 【2】CASE文 ~~~~~~~~~~~~~~
【1】IF文
https://docs.snowflake.com/ja/sql-reference/snowflake-scripting/if.html
https://docs.snowflake.com/ja/developer-guide/snowflake-scripting/branch.html#if-statements
IF (<condition>) THEN -- Statements to execute if the <condition> is true. [ ELSEIF (<condition2>) THEN -- ★注意★「else if」でなく「elseif」 -- Statements to execute if the <condition2> is true. ] [ ELSE -- Statements to execute if none of the conditions is true. ] END IF;
【2】CASE文
https://docs.snowflake.com/ja/sql-reference/snowflake-scripting/case.html
* 2ケースある。 => こちらも、普通のSQLと変わらない
https://docs.snowflake.com/ja/developer-guide/snowflake-scripting/branch.html#case-statements
~~~~~~~~~~~~~~ 1)単純CASE式(simple case) 2)検索CASE式(searched case) ~~~~~~~~~~~~~~
1)単純CASE式(simple case)
https://docs.snowflake.com/ja/developer-guide/snowflake-scripting/branch.html#simple-case-statements
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 ] ;
2)検索CASE式(searched 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 ] ;
【3】サンプル
* 以下の「例1」~「例3」について、 書き方は違うが処理内容的には同じ
例1:IF文
execute immediate $$ declare target_num number default 1; begin if (target_num = 1) then return 'one'; elseif (target_num = 2) then return 'two'; else return 'Unexpected input.'; end if; end; $$ ;
例2:単純CASE式(simple case)
execute immediate $$ declare target_num number default 1; begin case (target_num) when 1 then return 'one'; when 2 then return 'two'; else return 'unexpected choice'; end; end; $$ ;
例3:検索CASE式(searched case)
execute immediate $$ declare target_num number default 1; begin case when target_num = 1 then return 'one'; when target_num = 2 then return 'two'; else return 'unexpected choice'; end; end; $$ ;
関連記事
Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world ~
https://dk521123.hatenablog.com/entry/2021/11/22/212520
【Snowflake】ストアド ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/12/11/202904
【Snowflake】ストアド ~ 基本編 / ループ ~
https://dk521123.hatenablog.com/entry/2022/12/16/143349
【Snowflake】ストアド ~ EXECUTE IMMEDIATE ~
https://dk521123.hatenablog.com/entry/2022/12/17/000217
【Snowflake】ストアド ~ クエリ結果を受け取る ~
https://dk521123.hatenablog.com/entry/2022/12/24/212242
【Snowflake】ストアド ~ 例外 / EXCEPTION ~
https://dk521123.hatenablog.com/entry/2022/12/23/223345
【Snowflake】ストアド ~ デバッグログについて ~
https://dk521123.hatenablog.com/entry/2022/12/18/121334
Snowflake ~ テストデータ作成 / generator ~
https://dk521123.hatenablog.com/entry/2022/06/20/095659
ストアド ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2010/08/06/112528
SQL ~ CASE文 ~
https://dk521123.hatenablog.com/entry/2010/08/03/195704