BEGIN … END

BEGIN et END définissent un bloc Exécution de scripts Snowflake.

Pour plus d’informations sur les blocs, voir Comprendre les blocs dans Exécution de scripts Snowflake.

Syntaxe

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

Où :

statement

Une instruction peut être l’un des éléments suivants :

  • Une seule instruction SQL (y compris CALL).

  • Une instruction de flux de contrôle (par exemple, instruction looping ou branching).

  • Un bloc imbriqué.

exception_handler

Le traitement des exceptions est documenté dans EXCEPTION.

Notes sur l’utilisation

  • Le mot-clé END doit être suivi immédiatement d’un point-virgule, ou suivi immédiatement d’une étiquette qui est immédiatement suivie d’un point-virgule.

  • Le mot-clé BEGIN ne doit pas être suivi immédiatement d’un point-virgule.

  • BEGIN et END sont généralement utilisés à l’intérieur d’une autre construction de langage, telle qu’une construction looping ou branching, ou à l’intérieur d’une procédure stockée. Cependant, ce n’est pas requis. Un bloc BEGIN/END peut être la construction de premier niveau dans un bloc anonyme.

  • Les blocs peuvent être imbriqués.

Exemples

Voici un exemple simple d’utilisation de BEGIN et de END dans des instructions liées au groupe. Cet exemple crée deux tables liées.

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

L’exemple suivant est similaire ; les instructions sont regroupées dans un bloc et se trouvent également à l’intérieur d’une transaction dans ce bloc :

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

Dans cet exemple, les instructions sont à l’intérieur d’une construction branching.

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