AWAIT(Snowflake Scripting)

실행 중인 모든 비동기 하위 작업 이 완료되거나 RESULTSET 를 위해 실행 중인 특정 비동기 하위 작업이 완료될 때까지 기다렸다가 모든 작업이 완료되거나 특정 작업이 완료되면 각각 반환합니다.

AWAIT 는 호출 차단입니다. AWAIT 문을 사용하여 AWAIT 호출이 완료될 때까지 다른 코드가 실행되지 않도록 차단할 수 있습니다.

참고

Snowflake Scripting 구문은 Snowflake Scripting 블록 내에서만 유효합니다.

참고 항목:

CANCEL

구문

AWAIT { ALL | <result_set_name> };
Copy

여기서

ALL

저장 프로시저는 AWAIT 호출 전에 시작된 모든 비동기 하위 작업을 기다립니다.

result_set_name

저장 프로시저는 지정된 RESULTSET 에 대해 실행 중인 비동기 하위 작업이 완료될 때까지 기다립니다.

사용법 노트

  • 비동기 하위 작업은 쿼리에 ASYNC 키워드가 지정되면 만들어집니다. 자세한 내용은 비동기 하위 작업으로 작업하기 섹션을 참조하십시오.

  • 쿼리에 ASYNC 키워드가 지정되면 저장 프로시저는 AWAIT 문이 결과를 반환할 때까지 쿼리 결과에 액세스할 수 없습니다.

  • 비동기 하위 작업을 실행하는 경우 ‘실행 후 무시’는 지원되지 않습니다. 따라서 저장 프로시저가 완료될 때 아직 실행 중인 하위 작업이 있으면 하위 작업은 자동으로 취소됩니다.

  • Snowflake Scripting은 저장 프로시저의 코드에서 사용할 수 있는 기본 제공 변수를 지원합니다.

    이러한 변수는 비동기 하위 작업에 대해 다음과 같은 방식으로 작동합니다.

    • SQLID 변수는 비동기 하위 작업이 생성된 직후 비동기 하위 작업에 지정된 쿼리에 사용할 수 있습니다.

    • 오류를 일으킨 비동기 하위 작업과 관련된 AWAIT 또는 AWAIT ALL 문이 실행된 후 다음 예외 처리용 기본 제공 변수 를 사용할 수 있습니다.

      • SQLCODE

      • SQLERRM

      • SQLSTATE

      AWAIT ALL 문이 여러 비동기 하위 작업과 연결된 경우 이러한 기본 제공 변수는 첫 번째 실패한 비동기 하위 작업에 대한 정보를 캡처합니다.

    • DML 명령의 영향을 받는 행 수 와 관련된 다음 기본 제공 변수는 RESULTSET 실행에 대한 비동기 하위 작업과 연결된 AWAIT 문 다음에 사용할 수 있습니다.

      • SQLROWCOUNT

      • SQLFOUND

      • SQLNOTFOUND

      이러한 변수는 AWAIT ALL 문이 실행될 때 사용할 수 없습니다.

  • 비동기 하위 작업이 실패하면 비동기 작업과 연결된 AWAIT 또는 AWAIT ALL 문이 오류와 함께 실패하고 저장 프로시저의 실행이 중지됩니다. 예를 들어, 다음 저장 프로시저는 실행이 AWAIT 문에 도달하면 실패하고 오류를 반환합니다.

    BEGIN
      LET res RESULTSET := ASYNC (SELECT * FROM invalid_table);
      AWAIT res;
    END;
    
    Copy
    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 ALL;
Copy

RESULTSET 에 대해 실행 중인 비동기 하위 작업이 완료될 때까지 기다립니다.

AWAIT my_result_set;
Copy

더 많은 예는 비동기 하위 작업 사용 예시 섹션을 참조하십시오.