SQLFreeHandle
SQLFreeHandle#
특정한 환경, 연결, 그리고 명령문 핸들과 관련된 자원들을 해제한다.
구 문#
SQLRETURN SQLFreeHandle (
SQLSMALLINT handleType,
SQLHANDLE handle );
인 자#
자료유형 | 인자 | 사용 | 설명 |
---|---|---|---|
SQLSMALLINT | handleType | 입력 | 해제하고자 하는 핸들의 유형 SQL_HANDLE_ENV,SQL_HANDLE_DBC,SQL_HANDLE_STMT 중 하나이다. 만일 handleType이 위의 값들 중 하나가 아니면 SQLFreeHandle()은 SQL_INVALID_HANDLE을 반환한다. |
SQLHANDLE | handle | 입력 | 해제될 핸들 |
결괏값#
SQL_SUCCESS
SQL_INVALID_HANDLE
SQL_ERROR
SQLFreeHandle()이 SQL_ERROR를 반환한다면, 핸들은 유효하다.
설 명#
SQLFreeHandle()은 SQLFreeEnv(), SQLFreeConnect()와 SQLFreeStmt() 함수를 대체할 수 있다.
애플리케이션은 핸들이 해제된 후에 핸들을 사용해서는 안된다.
환경 핸들 해제#
handleType이 SQL_HANDLE_ENV인 SQLFreeHandle()을 호출하기 전에, 애플리케이션은 그 환경하에 할당 된 모든 연결에 대해 handleType이 SQL_HANDLE_DBC인 SQLFreeHandle()을 호출해야만 한다. 그렇지 않으면, SQLFreeHandle()의 호출은 SQL_ERROR을 반환하고 그 환경과 임의의 활성화된 연결은 계속 유효한 상태를 유지한다.
연결 핸들 해제#
handleType이 SQL_HANDLE_DBC인 SQLFreeHandle()을 호출하기 전에, 만일 이 핸들상에 연결이 있다면 애플리케이션은 그 연결에 대해 SQLDisconnect()를 호출해야만 한다. 그렇지 않으면, SQLFreeHandle()의 호출은 SQL_ERROR를 반환하고 연결은 여전히 유효하다.
명령문 핸들 해제#
handleType이 SQL_HANDLE_STMT인 SQLFreeHandle()의 호출은 handleType이 SQL_HANDLE_STMT인 SQLAllocHandle() 함수의 호출로 할당된 모든 자원들을 해제한다. 애플리케이션이 보류중인 결과들을 가지고 있는 명령문을 해제하기위해 SQLFreeHandle()을 호출할 때, 보류중인 결과들은 삭제된다.
진 단#
SQLSTATE | 설명 | 부연설명 |
---|---|---|
HY000 | 일반 오류 | |
HY001 | 메모리 할당 오류 | 명시된 핸들을 위한 메모리 할당에 실패 함. |
관련 함수#
SQLAllocHandle
예 제#
< $ALTIBASE_HOME/sample/SQLCLI/demo_meta1.cpp 참고 >
if ( dbc != NULL )
{
SQLFreeHandle( SQL_HANDLE_DBC, dbc );
}
if ( env != NULL )
{
SQLFreeHandle( SQL_HANDLE_ENV, env );
}