AWAIT (Script Snowflake)¶
Aguarda um trabalho filho assíncrono que está sendo executado para um RESULTSET e retorna quando o trabalho é concluído.
AWAIT é uma chamada de bloqueio. É possível usar uma instrução AWAIT para bloquear a execução de outro código até que um trabalho filho assíncrono seja concluído e seus resultados sejam retornados.
Nota
Este constructo do Script Snowflake só é válido dentro de um bloco do Script Snowflake.
- Consulte também:
Sintaxe¶
AWAIT <result_set_name> ;
Onde:
result_set_name
O nome do RESULTSET.
Notas de uso¶
Um trabalho filho assíncrono é criado para um RESULTSET quando a palavra-chave ASYNC é especificada para a consulta. Para obter mais informações, consulte Atribuição de uma consulta a um RESULTSET declarado.
Quando a palavra-chave ASYNC é especificada para uma consulta, o procedimento armazenado não pode acessar os resultados de consulta até que uma instrução AWAIT para o RESULTSET retorne os resultados.
Ao executar um trabalho filho assíncrono, não há suporte para «disparar e esquecer». Portanto, se o procedimento armazenado executar um trabalho filho que ainda esteja em execução quando o procedimento armazenado for concluído, o trabalho filho será cancelado automaticamente.
O Snowflake Scripting oferece suporte a variáveis internas que podem ser usadas no código para procedimentos armazenados. A variável SQLID fica disponível para a consulta especificada para um trabalho filho assíncrono imediatamente após a criação do trabalho filho assíncrono.
Todas as outras variáveis internas são preenchidas após a execução da instrução AWAIT associada ao trabalho filho assíncrono. Antes da execução da instrução AWAIT, essas variáveis têm valores NULL.
Especificamente, as seguintes variáveis internas para tratamento de exceções estão disponíveis após a execução da instrução AWAIT associada ao trabalho filho assíncrono:
SQLCODE
SQLERRM
SQLSTATE
As seguintes variáveis internas relacionadas ao número de linhas afetadas pelos comandos DML também estão disponíveis após a execução da instrução AWAIT associada ao trabalho filho assíncrono:
SQLROWCOUNT
SQLFOUND
SQLNOTFOUND
Se um trabalho filho assíncrono falhar, a instrução AWAIT associada ao trabalho assíncrono falhará com um erro e a execução do procedimento armazenado será interrompida. Por exemplo, o procedimento armazenado a seguir falha e retorna um erro quando a execução atinge a instrução 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.
Exemplos¶
AWAIT my_result_set;