BEGIN … END (Script Snowflake)¶
BEGIN
e END
definem um bloco de Script Snowflake.
Para obter mais informações sobre blocos, consulte Blocos no Script Snowflake.
Sintaxe¶
BEGIN
<statement>;
[ <statement>; ... ]
[ EXCEPTION <exception_handler> ]
END;
Onde:
statement
Uma instrução pode ser qualquer uma das seguintes opções:
Uma única instrução SQL (incluindo CALL).
Uma instrução de fluxo de controle (ex.: instrução de looping ou ramificação).
Um bloco aninhado.
exception_handler
Especifica como as exceções devem ser tratadas. Consulte Tratamento de exceções e EXCEPTION (Script Snowflake).
Notas de uso¶
A palavra-chave
END
deve ser seguida imediatamente por um ponto e vírgula, ou seguida imediatamente por uma tag que é imediatamente seguida por um ponto e vírgula.A palavra-chave
BEGIN
não deve ser seguida imediatamente por um ponto e vírgula.BEGIN
eEND
são normalmente usados dentro de outra construção de linguagem, como uma construção de looping ou ramificação, ou dentro de um procedimento armazenado. No entanto, isto não é necessário. Um bloco BEGIN/END pode ser a construção de nível superior dentro de um bloco anônimo.Os blocos podem ser aninhados.
Exemplos¶
Este é um exemplo simples de como usar BEGIN
e END
para agrupar instruções relacionadas. Este exemplo cria duas tabelas relacionadas.
EXECUTE IMMEDIATE $$
BEGIN
CREATE TABLE parent (ID INTEGER);
CREATE TABLE child (ID INTEGER, parent_ID INTEGER);
RETURN 'Completed';
END;
$$
;
O próximo exemplo é semelhante; as instruções são agrupadas em um bloco e também estão dentro de uma transação dentro desse bloco:
EXECUTE IMMEDIATE $$
BEGIN
BEGIN TRANSACTION;
TRUNCATE TABLE child;
TRUNCATE TABLE parent;
COMMIT;
RETURN '';
END;
$$
;
Neste exemplo, as instruções estão dentro de uma construção de ramificação.
IF (both_rows_are_valid) THEN
BEGIN
BEGIN TRANSACTION;
INSERT INTO parent ...;
INSERT INTO child ...;
COMMIT;
END;
END IF;