Détermination du nombre de lignes affectées par des commandes DML¶
Après l’exécution d’une commande DML (à l’exclusion de la commande TRUNCATE TABLE), Snowflake Scripting paramètre les variables globales suivantes. Vous pouvez utiliser ces variables pour déterminer si la dernière instruction DML a affecté des lignes.
Variable |
Description |
|---|---|
|
Nombre de lignes affectées par la dernière instruction DML. Ceci est équivalent à |
|
|
|
|
Note
Le bundle de changements de comportement 2025_01 modifie le comportement de ces variables. Lorsque le bundle est activé, les variables renvoient NULL lorsqu’une instruction nonDML est exécutée après la dernière instruction DML dans un bloc Snowflake Scripting ou une procédure stockée. Le bundle est activé par défaut. Pour plus d’informations sur le changement de comportement, voir Snowflake Scripting : Modifications des variables globales.
Si le bundle est désactivé, vous pouvez l’activer dans votre compte en exécutant l’instruction suivante :
Pour désactiver le bundle, exécutez l’instruction suivante :
Les exemples de cette section utilisent le tableau suivant :
L’exemple suivant utilise la variable SQLROWCOUNT pour renvoyer le nombre de lignes affectées par la dernière instruction DML (l’instruction INSERT).
Note: If you use Snowflake CLI, SnowSQL, the Classic Console, or the
execute_stream or execute_string method in Python Connector
code, use this example instead (see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector):
L’exemple suivant utilise les variables SQLFOUND et SQLNOTFOUND pour retourner le nombre de lignes affectées par la dernière instruction DML (l’instruction UPDATE).
Note: If you use Snowflake CLI, SnowSQL, the Classic Console, or the
execute_stream or execute_string method in Python Connector
code, use this example instead (see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector):
Lorsque le bloc anonyme s’exécute, la variable SQLFOUND est true car l’instruction UPDATE met à jour deux lignes.
Interrogez la table pour connaître les valeurs actuelles :
Exécutez à nouveau le même bloc anonyme et vous obtiendrez les résultats suivants :
L’instruction UPDATE est exécutée parce que la table contient une valeur supérieure à
2. En d’autres termes, la condition IF est satisfaite.La variable
SQLNOTFOUNDesttruecar aucune ligne n’est mise à jour. L’instruction UPDATE ne met à jour aucune ligne car aucune des valeurs de la table n’est inférieure à3(spécifiée dans la clause WHERE).
La requête renvoie le résultat suivant :
Mettez maintenant à jour la table pour que l’ensemble des valeurs soit fixé à 1 :
Exécutez à nouveau le même bloc anonyme et l’instruction UPDATE n’est pas exécutée car aucune des valeurs de la table n’est supérieure à 2. En d’autres termes, la condition IF n’étant pas remplie, l’instruction UPDATE ne s’exécute pas.