Snowflake Scripting : modifications des variables globales (En attente)¶
Attention
Ce changement de comportement fait partie du 2025_01 bundle.
Pour connaître le statut actuel du bundle, reportez-vous à Historique du bundle.
Lorsque ce bundle de changements de comportement est activé, les variables globales Snowflake Scripting des commandes DML se comportent différemment. Ces variables sont décrites dans Détermination du nombre de lignes affectées par des commandes DML.
Lorsqu’une instruction non DML est exécutée après la dernière instruction DML dans une procédure stockée ou un bloc Snowflake Scripting, ces variables se comportent comme suit :
- Avant la modification:
Les variables renvoient la valeur définie par la dernière instruction DML :
SQLROWCOUNT
- Nombre de lignes affectées par la dernière instruction DML.SQLFOUND
-TRUE
ouFALSE
en fonction de la dernière instruction DML.SQLNOTFOUND
-TRUE
ouFALSE
en fonction de la dernière instruction DML.
- Après la modification:
Les variables renvoient NULL.
Par exemple, le bloc anonyme Snowflake Scripting suivant renvoie des valeurs différentes avant et après la modification :
EXECUTE IMMEDIATE
$$
BEGIN
CREATE OR REPLACE TABLE test_snowflake_scripting_gv (i INT);
INSERT INTO test_snowflake_scripting_gv VALUES (1);
SELECT 1;
RETURN SQLROWCOUNT;
END;
$$;
- Valeur renvoyée avant la modification ::
+-----------------+ | anonymous block | |-----------------| | 1 | +-----------------+
- Valeur renvoyée après la modification ::
+-----------------+ | anonymous block | |-----------------| | NULL | +-----------------+
Pour obtenir le comportement précédent après la modification, enregistrez la valeur de la variable globale Snowflake Scripting dans une nouvelle variable avant les instructions non DML suivantes, puis renvoyez la valeur de la nouvelle variable. Par exemple :
EXECUTE IMMEDIATE
$$
BEGIN
LET sql_row_count_var := 0;
CREATE OR REPLACE TABLE test_snowflake_scripting_gv (i INT);
INSERT INTO test_snowflake_scripting_gv VALUES (1);
sql_row_count_var := SQLROWCOUNT;
SELECT 1;
RETURN sql_row_count_var;
END;
$$;
Réf : 1850