BEGIN ... END (Snowflakeスクリプト)¶
BEGIN
および END
は、Snowflakeスクリプトのブロックを定義します。
ブロックの詳細については、 Snowflakeスクリプトのブロックを理解する をご参照ください。
構文¶
BEGIN
<statement>;
[ <statement>; ... ]
[ EXCEPTION <exception_handler> ]
END;
条件:
statement
ステートメントは、次のいずれかになります。
exception_handler
例外の処理方法を指定します。 処理の例外 と EXCEPTION (Snowflakeスクリプト) をご参照ください。
使用上の注意¶
キーワード
END
の直後には、セミコロンを付けるか、セミコロンが直後にあるラベルを付ける必要があります。キーワード
BEGIN
の直後にセミコロンを付けることは できません。BEGIN
およびEND
は通常、ループ構造や分岐構造などの別の言語構造内、またはストアドプロシージャ内で使用されます。ただし、これは必須ではありません。BEGIN/END ブロックは、匿名ブロック内で最上位の構造にできます。ブロックはネストできます。
例¶
これは BEGIN
と END
を使用して、関連するステートメントをグループ化する簡単な例です。この例では、2つの関連するテーブルを作成します。
EXECUTE IMMEDIATE $$
BEGIN
CREATE TABLE parent (ID INTEGER);
CREATE TABLE child (ID INTEGER, parent_ID INTEGER);
RETURN 'Completed';
END;
$$
;
次の例も同様です。ステートメントは、ブロックにグループ化され、そのブロック内にあるトランザクション内にもあります。
EXECUTE IMMEDIATE $$
BEGIN
BEGIN TRANSACTION;
TRUNCATE TABLE child;
TRUNCATE TABLE parent;
COMMIT;
RETURN '';
END;
$$
;
この例では、ステートメントは 分岐 構造内にあります。
IF (both_rows_are_valid) THEN
BEGIN
BEGIN TRANSACTION;
INSERT INTO parent ...;
INSERT INTO child ...;
COMMIT;
END;
END IF;