適用対象: 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 つ以上の変数のローカル変数宣言
-
変数の名前。 名前は修飾されず、複合ステートメント内で一意である必要があります。
data_type
サポートされるすべてのデータ型。 data_typeを省略する場合は、DEFAULT を指定する必要があり、型はdefault_expressionから派生します。
{ DEFAULT | = } default_expression
宣言後の変数の初期値を定義します。 default_expressionは、data_typeにキャストできる必要があります。 既定値が指定されていない場合、変数は NULL で初期化されます。
-
Declare_condition
ローカル条件宣言
-
条件の非修飾名のスコープは複合文に限定されます。
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'
(大文字と小文字は区別されません)。-
この複合内で定義された条件、外側の複合ステートメント、またはシステム定義エラー クラス。
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