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;
Copy

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 e END 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;
$$
;
Copy

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

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;
Copy