BEGIN … END (Exécution de scripts Snowflake)

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

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

Spécifie comment les exceptions doivent être gérées. Reportez-vous à Traitement des exceptions et EXCEPTION (Exécution de scripts Snowflake).

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

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

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