AWAIT (Snowflake Scripting)¶
Wartet auf einen asynchronen untergeordneten Job, der für eine RESULTSET läuft, und kehrt zurück, wenn der Job beendet ist.
AWAIT ist ein blockierender Aufruf. Sie können eine AWAIT-Anweisung verwenden, um die Ausführung von anderem Code zu blockieren, bis ein asynchroner untergeordneter Job beendet ist und seine Ergebnisse zurückgegeben werden.
Bemerkung
Dieses Snowflake Scripting-Konstrukt ist nur innerhalb eines Snowflake Scripting-Blocks gültig.
- Siehe auch::
Syntax¶
AWAIT <result_set_name> ;
Wobei:
result_set_name
Der Name der RESULTSET.
Nutzungshinweise¶
Ein asynchroner untergeordneter Job wird für ein RESULTSET erstellt, wenn das Schlüsselwort ASYNC für den Job angegeben wird. Weitere Informationen dazu finden Sie unter Zuweisen einer Abfrage zu einem deklarierten RESULTSET.
Wenn das Schlüsselwort ASYNC für eine Abfrage angegeben ist, kann die gespeicherte Prozedur nicht auf die Abfrageergebnisse zugreifen, bis eine AWAIT-Anweisung für das RESULTSET die Ergebnisse zurückgibt.
Wenn Sie einen asynchronen untergeordneten Job ausführen, wird „Fire-and-Forget“ nicht unterstützt. Wenn die gespeicherte Prozedur einen untergeordneten Job ausführt, der noch läuft, wenn die gespeicherte Prozedur beendet ist, wird der untergeordnete Job daher automatisch abgebrochen.
Snowflake Scripting unterstützt integrierte Variablen, die Sie im Code für gespeicherte Prozeduren verwenden können. Die Variable SQLID ist für die Abfrage, die für einen asynchronen untergeordneten Job angegeben wurde, sofort nach der Erstellung des asynchronen untergeordneten Jobs verfügbar.
Alle anderen integrierten Variablen werden gefüllt, nachdem die AWAIT-Anweisung, die mit dem asynchronen untergeordneten Job verbunden ist, ausgeführt wurde. Bevor die AWAIT-Anweisung ausgeführt wird, haben diese Variablen NULL-Werte.
Insbesondere sind die folgenden integrierten Variablen für die Ausnahmebehandlung verfügbar, nachdem die AWAIT-Anweisung, die mit dem asynchronen untergeordneten Job verbunden ist, ausgeführt wurde:
SQLCODE
SQLERRM
SQLSTATE
Die folgenden integrierten Variablen, die sich auf die Anzahl der Zeilen beziehen, die von DML-Befehlen betroffen sind, sind auch verfügbar, nachdem die AWAIT-Anweisung, die mit dem asynchronen untergeordneten Job verbunden ist, ausgeführt wurde:
SQLROWCOUNT
SQLFOUND
SQLNOTFOUND
Wenn ein asynchroner untergeordneter Job fehlschlägt, schlägt die mit dem asynchronen Job verbundene AWAIT-Anweisung mit einem Fehler fehl und die Ausführung der gespeicherten Prozedur wird angehalten. Die folgende gespeicherte Prozedur schlägt zum Beispiel fehl und gibt einen Fehler zurück, wenn die Ausführung die AWAIT-Anweisung erreicht:
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.
Beispiele¶
AWAIT my_result_set;