Catégories :

Fonctions système (Informations sur la requête)

SYSTEM$GET_RESULTSET_STATUS

Renvoie le statut d’une valeur RESULTSET dans une procédure stockée Snowflake Scripting.

Cette fonction peut être utile pour obtenir le statut d’une tâche enfant asynchrone qui est en cours d’exécution pour un RESULTSET.

Syntaxe

SYSTEM$GET_RESULTSET_STATUS( <resultset_name> )
Copy

Arguments

resultset_name

Nom de l” RESULTSET.

Renvoie

Cette fonction renvoie le statut de RESULTSET dans une valeur de type VARCHAR. Les valeurs de statut suivantes sont possibles :

Statut

Description

RUNNING

La requête est toujours en cours d’exécution.

SUCCESS

La requête s’est terminée avec succès.

ABORTING

La requête est en cours d’annulation côté serveur.

FAILED_WITH_ERROR

La requête ne s’est pas terminée correctement en raison d’une erreur dans la requête.

FAILED_WITH_INCIDENT

La requête ne s’est pas terminée correctement en raison d’un incident survenu côté serveur.

ABORTED

La requête a été interrompue côté serveur.

QUEUED

La requête est mise en file d’attente pour exécution (c’est-à-dire qu’elle n’est pas encore exécutée), généralement parce qu’elle attend des ressources.

DISCONNECTED

La connexion de la session est interrompue. L’état de la requête basculera bientôt sur FAILED_WITH_ERROR.

RESUMING_WAREHOUSE

L’entrepôt est en cours de démarrage et la requête n’est pas encore exécutée.

QUEUED_REPAIRING_WAREHOUSE

L’entrepôt est en cours de réparation et la requête est en file d’attente pour exécution.

RESTARTED

La requête a redémarré.

BLOCKED

La requête est en attente d’un verrou détenu par une autre instruction.

Notes sur l’utilisation

Cette fonction ne peut être appelée que dans un bloc de Snowflake Scripting.

Exemples

L’exemple suivant appelle deux fois SYSTEM$GET_RESULTSET_STATUS pour renvoyer le statut d’un job enfant asynchrone en cours d’exécution pour RESULTSET. L’exemple appelle la fonction pendant que la tâche enfant asynchrone est en cours d’exécution et une fois qu’elle est terminée.

EXECUTE IMMEDIATE $$
DECLARE
  status2 VARCHAR DEFAULT 'invalid';
BEGIN
  LET res RESULTSET := ASYNC (SELECT SYSTEM$WAIT(3));
  LET status VARCHAR := SYSTEM$GET_RESULTSET_STATUS(res);

  AWAIT res;
  status2 := SYSTEM$GET_RESULTSET_STATUS(res);
  RETURN [status, status2];
END;
$$;
Copy
+------------------+
| GET_QUERY_STATUS |
+------------------+
| [                |
|   "RUNNING",     |
|   "SUCCESS"      |
| ]                |
+------------------+