BEGIN … END (Snowflake Scripting)

BEGIN und END definieren einen Snowflake Scripting-Block.

Weitere Informationen zu Blöcken finden Sie unter Erläuterungen zu Blöcken in Snowflake Scripting.

Syntax

BEGIN
    <statement>;
    [ <statement>; ... ]
[ EXCEPTION <exception_handler> ]
END;
Copy

Wobei:

statement

Folgende Typen von Anweisungen sind möglich:

  • Eine einzelne SQL-Anweisung (einschließlich CALL)

  • Eine Ablaufsteuerungsanweisung (z. B. Schleife oder Verzweigung)

  • Ein verschachtelter Block

exception_handler

Gibt an, wie Ausnahmen behandelt werden sollen. Weitere Informationen dazu finden Sie unter Behandeln von Ausnahmen und EXCEPTION (Snowflake Scripting).

Nutzungshinweise

  • Auf das Schlüsselwort END muss unmittelbar ein Semikolon folgen, oder es muss unmittelbar ein Label folgen, auf das wiederum unmittelbar ein Semikolon folgt.

  • Nach dem Schlüsselwort BEGIN muss nicht unmittelbar ein Semikolon folgen.

  • BEGIN und END werden in der Regel innerhalb eines anderen Sprachkonstrukts verwendet, z. B. in einer Schleife, einer Verzweigung oder einer gespeicherten Prozedur. Dies ist jedoch nicht erforderlich. Ein BEGIN/END-Block kann das Top-Level-Konstrukt innerhalb eines anonymen Blocks sein.

  • Blöcke können verschachtelt werden.

Beispiele

Hier ist ein einfaches Beispiel für die Verwendung von BEGIN und END zum Gruppieren zusammengehöriger Anweisungen. In diesem Beispiel werden verknüpfte Tabellen erstellt.

EXECUTE IMMEDIATE $$
BEGIN
    CREATE TABLE parent (ID INTEGER);
    CREATE TABLE child (ID INTEGER, parent_ID INTEGER);
    RETURN 'Completed';
END;
$$
;
Copy

Das nächste Beispiel ist ähnlich. Die Anweisungen sind in einem Block gruppiert und befinden sich ebenfalls innerhalb einer Transaktion innerhalb dieses Blocks:

EXECUTE IMMEDIATE $$
BEGIN
    BEGIN TRANSACTION;
    TRUNCATE TABLE child;
    TRUNCATE TABLE parent;
    COMMIT;
    RETURN '';
END;
$$
;
Copy

In diesem Beispiel befinden sich die Anweisungen innerhalb eines Verzweigungskonstrukts.

IF (both_rows_are_valid) THEN
    BEGIN
        BEGIN TRANSACTION;
        INSERT INTO parent ...;
        INSERT INTO child ...;
        COMMIT;
    END;
END IF;
Copy