AWAIT (Snowflake Scripting)¶
等待正在为 RESULTSET 运行的异步子作业,并在作业完成后返回。
AWAIT 是阻塞调用。可以使用 AWAIT 语句阻止其他代码运行,直到异步子作业完成并返回其结果。
备注
本 Snowflake Scripting 结构仅在 Snowflake Scripting 区块 内有效。
- 另请参阅:
语法¶
AWAIT <result_set_name> ;
其中:
result_set_name
RESULTSET 的名称。
使用说明¶
为查询指定 ASYNC 关键字时,将为 RESULTSET 创建异步子作业。有关更多信息,请参阅 将查询分配给已声明的 RESULTSET。
为查询指定 ASYNC 关键字时,存储过程无法访问查询结果,直到 RESULTSET 的 AWAIT 语句返回结果。
运行异步子作业时,不支持“触发并忘记”。因此,如果存储过程运行了在存储过程完成时仍在运行的子作业,则子作业将自动取消。
Snowflake Scripting 支持内置变量,您可以在存储过程的代码中使用它们。SQLID 变量可用于在异步子作业创建后立即为异步子作业指定的查询。
所有其他内置变量在与异步子作业关联的 AWAIT 语句运行后填充。在 AWAIT 语句运行之前,这些变量具有 NULL 值。
具体来说,在与异步子作业关联的 AWAIT 语句运行后,可以使用以下 用于异常处理的内置变量:
SQLCODE
SQLERRM
SQLSTATE
与异步子作业关联的 AWAIT 语句运行后,还可以使用以下与 受 DML 命令影响的行数 相关的内置变量:
SQLROWCOUNT
SQLFOUND
SQLNOTFOUND
如果异步子作业失败,与该异步作业关联的 AWAIT 语句将失败并出现错误,存储过程的执行将停止。例如,以下存储过程在执行到达 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.
示例¶
AWAIT my_result_set;