【Snowflake】ストアド ~ EXECUTE IMMEDIATE ~

■ はじめに

EXECUTE IMMEDIATE文についてメモしておく。

目次

【1】EXECUTE IMMEDIATE
 1)使いどころ
【2】サンプル
【3】その他のTips
 1)二重ドル記号($$)

【1】EXECUTE IMMEDIATE

* 指定されたSQL文の文字列を即時実行する

https://docs.snowflake.com/ja/sql-reference/sql/execute-immediate.html

-- execute immediate '<実行したいSQL文>';
execute immediate 'SELECT PI()';

1)使いどころ

* 一時的にストアドを実行したい場合
 (まずは簡単な動きをみたいなどにも使える)

 => 実際に、過去データの取り込み・アンロードするために使用した
 => ストアドだと、不要になったら、drop procedureしなくてはならなく
  間違って別のプロシージャを削除しちゃうっとかそんなことがなくなる

【2】サンプル

-- サンプルで使用している「$$」については、
-- 後述「【3】その他のTips」の「1)二重ドル記号($$)」を参照のこと
execute immediate $$
declare
  result varchar default 'Hello world!';
begin
  return result;
end;
$$
;

-- 出力結果
-- Hello world!

【3】その他のTips

1)二重ドル記号($$)

https://docs.snowflake.com/ja/sql-reference/data-types-text.html#dollar-quoted-string-constants

より抜粋
~~~~~~~~~~~~~~~~~~~~
ドル引用符で囲まれた文字列定数には、
引用符、バックスラッシュ、改行、およびその他の特殊文字(二重ドル記号を除く)を
エスケープせずに含めることができます。
ドル引用符で囲まれた文字列定数の内容は、常に文字通りに解釈されます。
~~~~~~~~~~~~~~~~~~~~


https://docs.snowflake.com/ja/sql-reference/sql/execute-immediate.html#basic-examples

-- より抜粋

set stmt =
$$
    select pi();
$$
;

execute immediate $stmt;
+-------------+
|        PI() |
|-------------|
| 3.141592654 |
+-------------+

関連記事

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】ストアド ~ 例外 / EXCEPTION ~
https://dk521123.hatenablog.com/entry/2022/12/23/223345
Snowflake】ストアド ~ デバッグログについて ~
https://dk521123.hatenablog.com/entry/2022/12/18/121334
Snowflake ~ 基本編 / ステージ ~
https://dk521123.hatenablog.com/entry/2022/09/01/220643
Snowflake ~ 日時関連 ~
https://dk521123.hatenablog.com/entry/2022/06/17/113003
Snowflake ~ 日時関連 / 日時取得関数 ~
https://dk521123.hatenablog.com/entry/2022/09/02/092144
Snowflake ~ Removeコマンド ~
https://dk521123.hatenablog.com/entry/2022/06/20/095659
Snowflake ~ ストレージ統合 ~
https://dk521123.hatenablog.com/entry/2022/06/29/221037
Snowflake ~ クエリの中断 ~
https://dk521123.hatenablog.com/entry/2022/12/09/152837
ストアド ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2010/08/06/112528