NULL (Snowflakeスクリプト)

NULL は、「no-op」(操作なし)ステートメントとして使用できます。

注釈

NULL をステートメントとして使用することは一般的ではありません。NULL は通常、 ステートメント としてではなく、 として使用されます。

値として、 NULL は「値なし」を意味します。詳細については、 SQL NULL についてのWikipediaの記事 をご参照ください。

JSON などの 半構造化データ型 を扱う場合は、 SQL 値としての NULL と JSON 値としての NULL を区別(別称「バリアントnull」) する必要がある場合があります。

注釈

この Snowflakeスクリプト 構造は、 Snowflakeスクリプトブロック 内でのみ有効です。

構文

NULL;
Copy

使用上の注意

  • NULL ステートメントは、 Snowflakeスクリプト のスクリプト内でのみ実行できます。

  • 例外ハンドラーの NULL ステートメントは、上位レベルのハンドラーがない場合に、コードが中止されるのではなく実行を継続することを保証します。

  • 分岐内の NULL ステートメントは何もしませんが、分岐が実行される条件を明示的に考慮したことをコードの作成者から読者に伝えます。つまり、 NULL は、分岐条件が見落とされたり、誤って省略されたりしてはいないことを示しています。

  • NULL ステートメントを使用する前に、代替手段を検討してください。

    たとえば、例外ハンドラーを持つストアドプロシージャを記述しているとします。ほとんどのストアドプロシージャでは、例外以外の各コードパスにより値を返す必要がある場合、例外ハンドラーを含む各コードパスも値を返す必要があります。その場合は、 NULL ステートメントの実行を避けます。代わりに、 NULL、空の結果セット、またはエラーインジケーターを明示的に返すことを検討してください。

次のコードでは、例外ハンドラーで NULL ステートメントを使用して、例外を確実に捕捉(呼び出し元に渡すのではなく)しますが、特定のアクションは実行しません。

CREATE PROCEDURE null_as_statement()
RETURNS VARCHAR
LANGUAGE SQL
AS
$$
BEGIN
    SELECT 1 / 0;
    RETURN 'If you see this, the exception was not thrown/caught properly.';
EXCEPTION
    WHEN OTHER THEN
        NULL;
END;
$$
;
Copy
CALL null_as_statement();
+-------------------+
| NULL_AS_STATEMENT |
|-------------------|
|              NULL |
+-------------------+
Copy

注釈

CALL ステートメントによって返される NULL 値は、例外の NULL ステートメントが直接の原因ではありません。戻り値が NULL なのは、ストアドプロシージャが明示的な RETURN ステートメントを実行しなかったためです。

Snowflakeは、例外ハンドラーの各分岐を含め、ストアドプロシージャが明示的に値を返すようにすることをお勧めします。