コンテキスト関数
この関数ファミリーを使用して、ステートメントが実行されるコンテキストに関する情報を収集できます。これらの関数は、ステートメントごとに最大1回評価されます。
例
セッションの現在のウェアハウス、データベース、スキーマを表示します。
SELECT CURRENT_WAREHOUSE(), CURRENT_DATABASE(), CURRENT_SCHEMA();
+---------------------+--------------------+------------------+
| CURRENT_WAREHOUSE() | CURRENT_DATABASE() | CURRENT_SCHEMA() |
|---------------------+--------------------+------------------+
| MY_WAREHOUSE | MY_DB | PUBLIC |
|---------------------+--------------------+------------------+
現在の日付、時刻、タイムスタンプを表示します(これらの関数を呼び出すために括弧は必要ありません)。
SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP;
+--------------+--------------+-------------------------------+
| CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP |
|--------------+--------------+-------------------------------|
| 2024-06-07 | 10:45:15 | 2024-06-07 10:45:15.064 -0700 |
+--------------+--------------+-------------------------------+
Snowflake Scripting ブロックで、 SQL ステートメント内の変数を設定するために、CURRENT_DATE 関数を括弧なしで呼び出します。
EXECUTE IMMEDIATE
$$
DECLARE
currdate DATE;
BEGIN
SELECT CURRENT_DATE INTO currdate;
RETURN currdate;
END;
$$
;
+-----------------+
| anonymous block |
|-----------------|
| 2024-06-07 |
+-----------------+
Snowflake Scripting ブロックで、 CURRENT_DATE 関数を括弧なしで呼び出す式に変数を設定しようとすると、エラーになります:
EXECUTE IMMEDIATE
$$
DECLARE
today DATE;
BEGIN
today := CURRENT_DATE;
RETURN today;
END;
$$
;
000904 (42000): SQL compilation error: error line 5 at position 11
invalid identifier 'CURRENT_DATE'
同じブロックは、括弧を付けて関数を呼び出すと、現在の日付を返します:
EXECUTE IMMEDIATE
$$
DECLARE
today DATE;
BEGIN
today := CURRENT_DATE();
RETURN today;
END;
$$
;
+-----------------+
| anonymous block |
|-----------------|
| 2024-06-07 |
+-----------------+