다음을 통해 공유


SQLCancelHandle 함수

규칙
도입된 버전: ODBC 3.8 표준 준수: 없음

대부분의 ODBC 3.8 이상 드라이버는 이 함수를 구현할 것으로 예상됩니다. 드라이버가 그렇지 않은 경우 Handle 매개 변수에서 연결 핸들이 있는 SQLCancelHandle 호출하면 SQLSTATE IM001과 '드라이버가 이 함수를 지원하지 않습니다.' 메시지가 포함된 SQL_ERROR 반환됩니다. Handle 매개 변수로 문 핸들이 있는 SQLCancelHandle 드라이버 관리자가 SQLCancel 호출에 매핑되고 드라이버가 처리될 수 있습니다. 는 SQLCancel구현합니다. 애플리케이션은 SQLGetFunctions 사용하여 드라이버가 SQLCancelHandle지원하는지 확인할 수 있습니다.

요약
SQLCancelHandle 연결 또는 문에 대한 처리를 취소합니다. 드라이버 관리자는 HandleType SQL_HANDLE_STMT 때 SQLCancelHandle 호출을 SQLCancel 호출에 매핑합니다.

통사론

  
SQLRETURN SQLCancelHandle(  
      SQLSMALLINT  HandleType,  
      SQLHANDLE    Handle);  

인수

HandleType
[입력] 처리를 취소할 핸들의 형식입니다. 유효한 값은 SQL_HANDLE_DBC 또는 SQL_HANDLE_STMT.

핸들
[입력] 처리를 취소할 핸들입니다.

HandleHandleType지정된 형식의 유효한 핸들이 아닌 경우 SQLCancelHandle SQL_INVALID_HANDLE 반환합니다.

반환

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR 또는 SQL_INVALID_HANDLE.

진단

SQLCancelHandle SQL_ERROR 또는 SQL_SUCCESS_WITH_INFO 반환하는 경우 연결된 SQLSTATE 값은 SQL_HANDLE_STMT HandleType SQLGetDiagRec 호출하고 문 핸들 핸들 또는 SQL_HANDLE_DBC HandleType 및 연결 핸들 핸들호출하여 가져올 수 있습니다.

다음 표에서는 SQLCancelHandle 일반적으로 반환되는 SQLSTATE 값을 나열하고 이 함수의 컨텍스트에서 각각에 대해 설명합니다. "(DM)" 표기법은 드라이버 관리자가 반환한 SQLSTATE에 대한 설명 앞에 섰습니다. 달리 명시되지 않는 한 각 SQLSTATE 값과 연결된 반환 코드는 SQL_ERROR.

SQLSTATE 오류 묘사
01000 일반 경고 드라이버 관련 정보 메시지입니다. 함수는 SQL_SUCCESS_WITH_INFO 반환합니다.
HY000 일반 오류 특정 SQLSTATE가 없고 구현별 SQLSTATE가 정의되지 않은 오류가 발생했습니다. *MessageText 버퍼 인수의 SQLGetDiagRec 반환된 오류 메시지는 오류와 그 원인을 설명합니다.
HY001 메모리 할당 오류 드라이버가 함수 실행 또는 완료를 지원하는 데 필요한 메모리를 할당할 수 없습니다.
HY010 함수 시퀀스 오류 비동기적으로 실행되는 문 관련 함수는 Handle연결된 문 핸들 중 하나에 대해 호출되었으며 HandleType SQL_HANDLE_DBC 설정되었습니다. SQLCancelHandle 호출되었을 때 비동기 함수가 계속 실행되었습니다.

(DM) HandleType 인수가 SQL_HANDLE_STMT; 연결된 연결 핸들에서 비동기적으로 실행되는 함수가 호출되었습니다. 이 함수가 호출되었을 때 함수가 계속 실행되고 있습니다.

(DM) SQLExecute, SQLExecDirect또는 SQLMoreResultsHandle 연결된 문 핸들 중 하나에 대해 호출되었으며 HandleType SQL_HANDLE_DBC 설정되고 SQL_PARAM_DATA_AVAILABLE 반환되었습니다. 이 함수는 모든 스트리밍된 매개 변수에 대해 데이터를 검색하기 전에 호출되었습니다.

SQLBrowseConnectConnectionHandle호출되고 SQL_NEED_DATA 반환되었습니다. 이 함수는 검색 프로세스가 완료되기 전에 호출되었습니다.
HY013 메모리 관리 오류 메모리 조건이 낮기 때문에 기본 메모리 개체에 액세스할 수 없기 때문에 함수 호출을 처리할 수 없습니다.
HY092 잘못된 특성/옵션 식별자 HandleType SQL_HANDLE_ENV 또는 SQL_HANDLE_DESC 설정되었습니다.
HY117 알 수 없는 트랜잭션 상태로 인해 연결이 일시 중단됩니다. 연결 끊기 및 읽기 전용 함수만 허용됩니다. (DM) 일시 중단 상태에 대한 자세한 내용은 SQLEndTran 함수참조하세요.
HYT01 연결 제한 시간이 만료되었습니다. 데이터 원본이 요청에 응답하기 전에 연결 제한 시간이 만료되었습니다. 연결 제한 시간은 SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT 통해 설정됩니다.
IM001 드라이버는 이 함수를 지원하지 않습니다. (DM) Handle 연결된 드라이버는 함수를 지원하지 않습니다.

SQLCancelHandle HandleType SQL_HANDLE_STMT 설정하여 호출되는 경우 SQLCancel함수에서 반환할 수 있는 모든 SQLSTATE를 반환할 수 있습니다.

코멘트

이 함수는 SQLCancel 비슷하지만 연결 또는 문 핸들을 문 핸들이 아닌 매개 변수로 사용할 수 있습니다. 드라이버 관리자는 HandleType SQL_HANDLE_STMT 때 SQLCancelHandle 호출을 SQLCancel 호출에 매핑합니다. 이렇게 하면 드라이버가 SQLCancelHandle구현하지 않더라도 애플리케이션에서 SQLCancelHandle 사용하여 문 작업을 취소할 수 있습니다.

문 작업을 취소하는 방법에 대한 자세한 내용은 SQLCancel 함수참조하세요.

Handle 진행 중인 작업이 없는 경우 SQLCancelHandle 대한 호출은 영향을 주지 않습니다.

연결 핸들에서 SQLCancelHandle 다음 유형의 처리를 취소할 수 있습니다.

  • 연결에서 비동기적으로 실행되는 함수입니다.

  • 다른 스레드의 연결 핸들에서 실행되는 함수입니다.

연결에서 비동기적으로 실행되는 함수를 취소하기 위해 SQLCancelHandle 호출되면 SQLCancelHandle 게시한 진단 레코드가 취소되는 작업에서 반환된 레코드에 추가됩니다. 그러나 SQLCancelHandle 다른 스레드의 연결에서 실행되는 함수를 취소할 때 진단 레코드를 반환하지 않습니다.

SQLCancelHandle 사용하여 SQLEndTran 취소하면 연결이 일시 중단된 상태로 전환될 수 있습니다. 일시 중단 상태에 대한 자세한 내용은 SQLEndTran 함수참조하세요.

메모

Windows 7보다 오래된 Windows 운영 체제에 배포될 애플리케이션에서 SQLCancelHandle 사용하는 방법에 대한 자세한 내용은 호환성 매트릭스참조하세요.

함수가 SQL_STILL_EXECUTING 반환하는 경우 애플리케이션은 SQLCancelHandle 호출하여 작업을 취소할 수 있습니다. 취소 요청이 성공하면 SQLCancelHandle SQL_SUCCESS 반환합니다. 원래 함수가 취소되었음을 의미하지는 않습니다. 취소 요청이 처리되었음을 나타냅니다. 드라이버와 데이터 원본은 작업이 취소되는 시기 또는 시기를 결정합니다. 반환 코드가 SQL_STILL_EXECUTING 않을 때까지 애플리케이션은 원래 함수를 계속 호출해야 합니다. 원래 함수가 취소된 경우 반환 코드는 SQL_ERROR SQLSTATE HY008(작업이 취소됨)입니다. 원래 함수가 정상적인 처리를 완료한 경우(취소되지 않음) 반환 코드는 SQL_SUCCESS 또는 SQL_SUCCESS_WITH_INFO, 원래 함수가 실패한 경우 HY008(작업 취소)이 아닌 SQLSTATE와 SQL_ERROR.

다른 스레드에서 실행되는 함수 취소

다중 스레드 애플리케이션에서 애플리케이션은 다른 스레드에서 실행 중인 작업을 취소할 수 있습니다. 작업을 취소하기 위해 애플리케이션은 함수에서 사용되는 핸들을 사용하여 SQLCancelHandle 호출하지만 다른 스레드에서 호출합니다. 드라이버와 운영 체제는 작업을 취소하는 방법을 결정합니다. SQLCancelHandle 반환 코드는 드라이버가 요청을 처리하여 SQL_SUCCESS 또는 SQL_ERROR 반환하는지 여부를 나타냅니다(진단 정보가 반환되지 않음). 원래 함수의 처리가 취소되면 원래 함수는 SQL_ERROR 및 SQLSTATE HY008(작업이 취소됨)을 반환합니다.

함수를 취소하기 위해 다른 스레드에서 SQLCancelHandle 호출될 때 함수가 실행되는 경우 함수가 성공하고 취소가 적용되기 전에 SQL_SUCCESS 반환할 수 있습니다. SQLCancelHandle 작업을 취소하기 전에 작업이 완료된 경우 SQLCancelHandle 호출은 영향을 주지 않습니다.

자세한 내용은 보다
문 핸들에서 비동기적으로 실행되는 함수를 취소하거나, 데이터가 필요한 문에서 함수를 취소하거나, 다른 스레드의 문에서 실행되는 함수를 취소합니다. SQLCancel 함수

참고 항목

ODBC API 참조
ODBC 헤더 파일
비동기 실행(폴링 메서드)