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;