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;
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
undEND
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;
$$
;
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;
$$
;
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;