DECLARE (Exécution de scripts Snowflake)¶
Déclare un(e) ou plusieurs variables, curseurs, RESULTSETs ou exceptions Exécution de scripts Snowflake.
Pour plus d’informations sur les variables, les curseurs, les RESULTSETs et les exceptions, voir :
- Voir aussi:
Syntaxe¶
DECLARE
{ <variable_declaration> | <cursor_declaration> | <resultset_declaration> | <exception_declaration> };
[{ <variable_declaration> | <cursor_declaration> | <resultset_declaration> | <exception_declaration> }; ... ]
La syntaxe de chaque type de déclaration est décrite plus en détail ci-dessous.
Syntaxe de déclaration des variables¶
Utilisez la syntaxe suivante pour déclarer une variable.
<variable_declaration> ::=
<variable_name> [<type>] [ { DEFAULT | := } <expression>]
Où :
variable_name
Nom de la variable. Le nom doit suivre les règles de dénomination pour Identificateurs d’objet.
type
DEFAULT expression
ou .:= expression
Affecte la valeur de l’expression
expression
à la variable. Sitype
etexpression
sont tous deux spécifiés, l’expression doit correspondre à un type de données qui correspond, ou peut être implicitement converti autype
spécifié.
Par exemple :
profit NUMBER(38, 2) := 0;
Pour un exemple complet, voir Exemples.
Pour plus d’informations sur les variables, voir Utilisation des variables.
Syntaxe de déclaration des curseurs¶
Utilisez la syntaxe suivante pour déclarer un curseur.
<cursor_declaration> ::=
<cursor_name> CURSOR FOR <query>
Où :
cursor_name
Le nom à donner au curseur. Il peut s’agir de tout identificateur Snowflake valide qui n’est pas déjà utilisé dans ce bloc. L’identificateur est utilisé par d’autres commandes liées au curseur, comme
FETCH
.query
La requête qui définit le jeu de résultats sur lequel le curseur itère.
Il peut s’agir de presque n’importe quelle instruction
SELECT
valide.
Par exemple :
c1 CURSOR FOR SELECT id, price FROM invoices;
Pour plus d’informations sur les curseurs (y compris des exemples complets), voir Utilisation des curseurs.
Syntaxe de la déclaration RESULTSET¶
Utilisez la syntaxe suivante pour déclarer un RESULTSET.
<resultset_name> RESULTSET [ { DEFAULT | := } [ ASYNC ] ( <query> ) ] ;
Où :
resultset_name
Le nom à donner au RESULTSET.
Le nom doit être unique dans le scope actuel.
Le nom doit suivre les règles de dénomination pour Identificateurs d’objet.
ASYNC
Exécute la requête en tant que tâche enfant anonyme.
La requête peut être n’importe quelle instruction SQL valide, y compris des instructions SELECT et DML telles que INSERT ou UPDATE.
Lorsque ce mot-clé est omis, la procédure stockée exécute les tâches enfants de manière séquentielle, et chaque tâche enfant attend que la tâche enfant en cours se termine avant de démarrer.
Vous pouvez utiliser ce mot-clé pour exécuter plusieurs tâches enfants simultanément, ce qui peut améliorer l’efficacité et réduire le temps d’exécution global.
Vous pouvez utiliser les instructions AWAIT et CANCEL pour gérer des tâches enfants asynchrones pour un RESULTSET.
DEFAULT query
ou .:= query
Assigne la valeur de
query
à RESULTSET.
Par exemple :
res RESULTSET DEFAULT (SELECT col1 FROM mytable ORDER BY col1);
Pour plus d’informations sur RESULTSETs (y compris des exemples complets), voir Utilisation des RESULTSETs.
Syntaxe de déclaration des exceptions¶
Utilisez la syntaxe suivante pour déclarer une exception.
<exception_name> EXCEPTION [ ( <exception_number> , '<exception_message>' ) ] ;
Où :
exception_name
Le nom à donner à l’exception.
exception_number
Un numéro pour identifier de façon unique l’exception. Le nombre doit être un entier compris entre -20000 et -20999. Le numéro ne doit pas être utilisé pour une autre exception qui existe en même temps.
Par défaut : -20000
exception_message
Un message pour décrire l’exception. Le message ne doit pas contenir de caractères guillemets doubles.
Valeur par défaut : chaîne vide.
Par exemple :
exception_could_not_create_table EXCEPTION (-20003, 'ERROR: Could not create table.');
Pour plus d’informations sur les exceptions (y compris des exemples complets), voir Traitement des exceptions.
Exemples¶
Cet exemple déclare une variable nommée profit
pour l’utiliser dans un bloc anonyme Snowflake Scripting :
DECLARE
profit number(38, 2) DEFAULT 0.0;
BEGIN
LET cost number(38, 2) := 100.0;
LET revenue number(38, 2) DEFAULT 110.0;
profit := revenue - cost;
RETURN profit;
END;
Remarque : si vous utilisez SnowSQL, Classic Console, ou la méthode execute_stream
ou execute_string
dans le code Python Connector, utilisez cet exemple à la place (voir Utilisation d’Exécution de scripts Snowflake dans SnowSQL, Classic Console, et le connecteur Python) :
EXECUTE IMMEDIATE
$$
DECLARE
profit number(38, 2) DEFAULT 0.0;
BEGIN
LET cost number(38, 2) := 100.0;
LET revenue number(38, 2) DEFAULT 110.0;
profit := revenue - cost;
RETURN profit;
END;
$$
;
Pour plus d’exemples relatifs à la déclaration de variables, aux curseurs, aux RESULTSETs et aux exceptions, voir :