SQLCompleteAsync 함수
규칙
도입된 버전: ODBC 3.8 표준 준수: 없음
요약
SQLCompleteAsync 를 사용하여 알림 또는 폴링 기반 처리를 사용하여 비동기 함수가 완료되는 시기를 확인할 수 있습니다. 비동기 작업에 대한 자세한 내용은 비동기 실행을 참조하세요.
SQLCompleteAsync 는 ODBC 드라이버 관리자에서만 구현됩니다.
알림 기반 비동기 처리 모드 에서 드라이버 관리자가 알림에 사용되는 이벤트 개체를 발생시킬 때 SQLCompleteAsync 를 호출해야 합니다. SQLCompleteAsync 는 비동기 처리를 완료하고 비동기 함수는 반환 코드를 생성합니다.
폴링 기반 비동기 처리 모드 에서 SQLCompleteAsync 는 원래 비동기 함수 호출에서 인수를 지정할 필요 없이 원래 비동기 함수를 호출하는 대안입니다. ODBC 커서 라이브러리를 사용할 수 있는지 여부에 관계없이 SQLCompleteAsync 를 사용할 수 있습니다.
구문
SQLRETURN SQLCompleteAsync(
SQLSMALLINT HandleType,
SQLHANDLE Handle,
RETCODE * AsyncRetCodePtr);
인수
HandleType
[입력] 비동기 처리를 완료할 핸들의 형식입니다. 유효한 값은 SQL_HANDLE_DBC 또는 SQL_HANDLE_STMT.
Handle
[입력] 비동기 처리를 완료할 핸들입니다. Handle이 HandleType에 지정된 형식의 유효한 핸들이 아니면 SQLCompleteAsync는 SQL_INVALID_HANDLE 반환합니다.
Handle이 HandleType에 지정된 형식의 유효한 핸들이 아니면 SQLCompleteAsync는 SQL_INVALID_HANDLE 반환합니다.
AsyncRetCodePtr
[출력] 비동기 API의 반환 코드를 포함할 버퍼에 대한 포인터입니다. AsyncRetCodePtr가 NULL이면 SQLCompleteAsync는 SQL_ERROR 반환합니다.
반품
SQL_SUCCESS, SQL_ERROR, SQL_NO_DATA 또는 SQL_INVALID_HANDLE.
진단
SQLCompleteAsync가 SQL_SUCCESS 반환하는 경우 애플리케이션은 AsyncRetCodePtr이 가리키는 버퍼에서 비동기 함수의 반환 코드를 가져와야 합니다. 연결된 SQLSTATE(있는 경우)는 SQL_HANDLE_STMT HandleType 및 문 핸들 또는 SQL_HANDLE_DBC HandleType 및 연결 핸들을 사용하여 SQLGetDiagRec 를 호출하여 가져올 수 있습니다. 이러한 진단 레코드는 이 SQLCompleteAsync 함수가 아니라 비동기 함수와 연결됩니다.
SQLCompleteAsync는 SQL_SUCCESS 이외의 코드를 반환하여 SQLCompleteAsync가 올바르게 호출되지 않았음을 나타냅니다. 이 경우 SQLCompleteAsync 는 진단 레코드를 게시하지 않습니다. 가능한 반환 코드는 다음과 같습니다.
SQL_INVALID_HANDLE: HandleType 및 Handle으로 표시된 핸들이 유효한 핸들이 아닙니다.
SQL_ERROR: AsyncRetCodePtr 가 NULL이거나 핸들에서 비동기 처리를 사용할 수 없습니다.
SQL_NO_DATA: 알림 모드에서 비동기 작업이 진행 중이 아니거나 드라이버 관리자가 애플리케이션에 알리지 않았습니다. 폴링 모드에서는 비동기 작업이 진행되지 않습니다.
주석
폴링 기반 비동기 처리 모드에서는 SQLCompleteAsync가 SQL_SUCCESS 반환할 때 AsyncRetCodePtr가 SQL_STILL_EXECUTING 수 있습니다. AsyncRetCodePtr가 SQL_STILL_EXECUTING 않을 때까지 애플리케이션은 폴링을 유지해야 합니다. 알림 기반 비동기 처리 모드 에서 AsyncRetCodePtr 는 SQL_STILL_EXECUTING 않습니다.