AWAIT (Exécution de scripts Snowflake)¶
Attend une tâche enfant asynchrone qui s’exécute pour un RESULTSET, et revient lorsque la tâche est terminée.
AWAIT est un appel bloquant. Vous pouvez utiliser une instruction AWAIT pour bloquer l’exécution d’autres codes jusqu’à ce qu’une tâche enfant asynchrone soit terminée et que ses résultats soient renvoyés.
Note
Cette construction Exécution de scripts Snowflake n’est valable qu’à l’intérieur d’un bloc Exécution de scripts Snowflake.
- Voir aussi ::
Syntaxe¶
AWAIT <result_set_name> ;
Où :
result_set_name
Nom de l” RESULTSET.
Notes sur l’utilisation¶
Une tâche enfant asynchrone est créée pour un RESULTSET lorsque le mot-clé ASYNC est spécifié pour la requête. Pour plus d’informations, voir Attribution d’une requête à un RESULTSET déclaré.
Lorsque le mot-clé ASYNC est spécifié pour une requête, la procédure stockée ne peut pas accéder aux résultats de la requête tant qu’une instruction AWAIT pour RESULTSET ne renvoie pas les résultats.
Lorsque vous exécutez une tâche enfant asynchrone, la fonction « fire and forget » n’est pas prise en charge. Par conséquent, si la procédure stockée exécute une tâche enfant qui est toujours en cours d’exécution lorsque la procédure stockée se termine, la tâche enfant est automatiquement annulée.
Snowflake Scripting prend en charge les variables intégrées que vous pouvez utiliser dans le code pour les procédures stockées. La variable SQLID est disponible pour la requête spécifiée pour une tâche enfant asynchrone immédiatement après la création de la tâche enfant asynchrone.
Toutes les autres variables intégrées sont renseignées après l’exécution de l’instruction AWAIT associée à la tâche enfant asynchrone. Avant l’exécution de l’instruction AWAIT, ces variables ont des valeurs NULL.
Plus précisément, les variables intégrées suivantes pour la gestion des exceptions sont disponibles après l’exécution de l’instruction AWAIT associée à la tâche enfant asynchrone :
SQLCODE
SQLERRM
SQLSTATE
Les variables intégrées suivantes relatives au nombre de lignes affectées par les commandes DML sont également disponibles après l’exécution de l’instruction AWAIT associée à la tâche enfant asynchrone :
SQLROWCOUNT
SQLFOUND
SQLNOTFOUND
Si une tâche enfant asynchrone échoue, l’instruction AWAIT associée à la tâche asynchrone échoue avec une erreur et l’exécution de la procédure stockée s’arrête. Par exemple, la procédure stockée suivante échoue et renvoie une erreur lorsque l’exécution atteint l’instruction AWAIT :
BEGIN LET res RESULTSET := ASYNC (SELECT * FROM invalid_table); AWAIT res; END;
002003 (42S02): Uncaught exception of type 'STATEMENT_ERROR' on line 2 at position 4 : SQL compilation error: Table 'INVALID_TABLE' does not exist or not authorized.
Exemples¶
AWAIT my_result_set;