次の方法で共有


開始 終了 複合ステートメント

適用対象:チェックマーク付きの「はい」 Databricks SQL チェックマーク付きの「はい」 Databricks Runtime 16.3 以降

Von Bedeutung

この機能は パブリック プレビュー段階です

SQL ステートメント、フロー制御ステートメント、ローカル変数宣言、および例外ハンドラーのシーケンスを含めることができる SQL スクリプト ブロックを実装します。

ノートブックから複合ステートメントを呼び出すときは、セル内の唯一のステートメントである必要があります。

構文

[ label : ]
      BEGIN
      [ { declare_variable | declare_condition } ; [...] ]
      [ declare_handler ; [...] ]
      [ SQL_statement ; [...] ]
      END [ label ]

declare_variable
  DECLARE variable_name datatype [ DEFAULT default_expr ]

declare_condition
  DECLARE condition_name CONDITION [ FOR SQLSTATE [ VALUE ] sqlstate ]

declare_handler
  DECLARE handler_type HANDLER FOR condition_values handler_action

handler_type
  EXIT

condition_values
 { { SQLSTATE [ VALUE ] sqlstate | condition_name } [, ...] |
   { SQLEXCEPTION | NOT FOUND } [, ...] }

パラメーター

  • ラベル

    省略可能な識別子は、複合内で定義された変数を修飾し、化合物を残すために使用されます。 両方のラベルの出現箇所が一致する必要があり、 END ラベルは、 label: が指定されている場合にのみ指定できます。

    最上位 レベルの複合ステートメントにはラベルを指定しないでください。

  • NOT ATOMIC

    複合内の SQL ステートメントが失敗した場合、前の SQL ステートメントはロールバックされないことを指定します。 これは既定の動作であり、唯一の動作です。

  • declare_variable

    1 つ以上の変数のローカル変数宣言

    • variable_name

      変数の名前。 名前は修飾されず、複合ステートメント内で一意である必要があります。

    • data_type

      サポートされるすべてのデータ型。 data_typeを省略する場合は、DEFAULT を指定する必要があり、型はdefault_expressionから派生します。

    • { DEFAULT | = } default_expression

      宣言後の変数の初期値を定義します。 default_expressionは、data_typeにキャストできる必要があります。 既定値が指定されていない場合、変数は NULL で初期化されます。

  • Declare_condition

    ローカル条件宣言

    • condition_name

      条件の非修飾名のスコープは複合文に限定されます。

    • sqlstate

      A から Z と 0..9 で構成される 5 文字の英数字 (大文字と小文字を区別しない) の STRING リテラル。 SQLSTATE は、'00'、'01'、または 'XX' で始まることはできません。 '02' から始まる SQLSTATE は、定義済みの NOT FOUND 例外によってもキャッチされます。 指定しない場合、SQLSTATE は '45000' です。

  • declare_handler

    エラー ハンドラーの宣言。

    • handler_type

      • EXIT

        条件の処理後に複合ステートメントを終了するハンドラーを分類します。

    • condition_values

      ハンドラーが適用する sqlstate または条件を指定します。 条件値は、複合ステートメント内のすべてのハンドラー内で一意である必要があります。 特定の条件値は、 SQLEXCEPTIONよりも優先されます。

    • sqlstate

      5 文字のSTRINGリテラル'A'-'Z''0'-'9' (大文字と小文字は区別されません)。

    • condition_name

      この複合内で定義された条件、外側の複合ステートメント、またはシステム定義エラー クラス。

    • SQLEXCEPTION

      ユーザー側のエラー状態に適用されます。

    • NOT FOUND

      SQLSTATE '02' クラスのエラー条件に適用されます。

    • handler_action

      条件値のいずれかが発生したときに実行する SQL ステートメント。 複数のステートメントを追加するには、入れ子になった複合ステートメントを使用します。

  • SQL_statement

    DDL、DML、制御ステートメント、複合ステートメントなどの SQL ステートメント。 SELECTまたはVALUESステートメントは、呼び出し側が使用できる結果セットを生成します。

例示

-- A compound statement with local variables, and exit hanlder and a nested compound.
> BEGIN
    DECLARE a INT DEFAULT 1;
    DECLARE b INT DEFAULT 5;
    DECLARE EXIT HANDLER FOR DIVIDE_BY_ZERO
      div0: BEGIN
        VALUES (15);
      END div0;
    SET a = 10;
    SET a = b / 0;
    VALUES (a);
END;
15