SQLCancel
SQLCancel#
처리 중인 명령문을 취소한다.
구 문#
SQLRETURN SQLCancel (
SQLHSTMT stmt);
인 자#
자료유형 | 인자 | 사용 | 설명 |
---|---|---|---|
SQLHSTMT | stmt | 입력 | 명령문 핸들 |
결괏값#
SQL_SUCCESS
SQL_SUCCESS_WITH_INFO
SQL_ERROR
SQL_INVALID_HANDLE
설 명#
SQLCancel은 아래와 같은 처리중인 명령문을 취소할 수 있다:
-
데이터가 필요한 명령문
-
다른 쓰레드에서 실행중인 명령문(statement)
만약 지정한 명령문 핸들에 해당하는 명령문이 수행 중이 아니거나 이미 수행이 끝났다면, SQLCancel은 무시된다. 또한 취소하려던 명령문이 이미 수행을 완료하였다면, 명령의 결과는 데이터베이스에 반영된다. 이 때 조회 결과 집합이 있다면 결과 집합을 가져올 수 있다.
데이터가 필요한 상태의 명령문 취소하기#
SQLExecute, SQLExecDirect, SQLBulkOperations 또는 SQLSetPos를 "실행시 데이터 전송(DATA_AT_EXEC)" 옵션으로 호출하고 모든 데이터를 서버로 보내기 전에 SQLCancel을 호출하여 명령문 수행을 취소할 수 있다. 명령문이 취소된 후에는 이러한 SQLExecute 또는 SQLExecDirect 등의 함수를 다시 호출할 수 있다.
SQLBulkOperations 또는 SQLSetPos을 취소하더라도, 커서 상태나 현재 커서 위치는 바뀌지 않는다.
다른 쓰레드에서 수행중인 함수 취소하기#
멀티쓰레드 애플리케이션에서 다른 쓰레드가 수행중인 함수를 취소하고자 할 때 SQLCancel을 사용할 수 있다. 취소하고자 하는 함수에 사용된 것과 동일한 명령문 핸들을 사용해서 다른 쓰레드에서 SQLCancel을 호출하면 된다.
SQLCancel로 취소된 함수는 즉시 SQL_ERROR를 반환하며, 진단을 통해 해당 함수가 명령문 수행을 실패했는지 또는 사용자에 의해 취소되었는지를 확인할 수 있다.
진 단#
SQLSTATE | 설명 | 부연설명 |
---|---|---|
HY000 | 일반 오류 | |
HY001 | 메모리 할당 오류 | Altibase CLI 드라이버가 함수를 실행하고 완료하기 위해 요구된 메모리를 할당할 수 없음 |
08S01 | 통신 회선 장애 (데이터 송수신 실패) | Altibase CLI 드라이버와 DB간에 함수 처리가 완료되기 전에 통신 회선 실패 |
08003 | stmt가 연결되지 않거나 connection이 끊어진 상태 | |
HY010 | 함수 연속 오류 | 주어진 stmt는 이 함수를 수행할 수 없음. 비동기 방식은 미지원. |
HY008 | 작업 취소 |
관련 함수#
SQLBindParameter
SQLBulkOperations
SQLExecDirect
SQLExecute
SQLFreeStmt
SQLGetDiagField
SQLGetDiagRec
SQLParamData
SQLPutData
SQLSetPos