BEGIN ...END (Snowflake Scripting)¶
BEGIN
和 END
定义 Snowflake Scripting 块。
有关块的更多信息,请参阅 了解 Snowflake Scripting 中的块。
语法¶
BEGIN
<statement>;
[ <statement>; ... ]
[ EXCEPTION <exception_handler> ]
END;
其中:
exception_handler
指定应如何处理异常。请参阅 处理异常 和 EXCEPTION (Snowflake Scripting)。
使用说明¶
关键字
END
后面必须紧跟一个分号,或者紧跟一个紧跟分号的标签。关键字
BEGIN
后面 不能 紧跟分号。BEGIN
和END
通常用在另一种语言结构中,如循环或分支结构中,或者用在存储过程中。但是,这不是必需的。BEGIN/END 块可以是匿名块内的顶层结构。块可以嵌套。
示例¶
这是使用 BEGIN
和 END
对相关语句进行分组的简单示例。此示例创建两个相关表。
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;