콘텐츠로 이동

SQLAllocHandle

SQLAllocHandle#

환경, 연결, 그리고 명령문 핸들을 위한 메모리를 할당하고 초기화 한다.

구 문#

SQLRETURN  SQLAllocHandle (
    SQLSMALLINT     HandleType,
    SQLHANDLE       InputHandle,
    SQLHANDLE *     OutputHandlePtr );

인 자#

자료유형 인자 사용 설명
SQLSMALLINT HandleType 입력 할당 될 핸들 타입으로 다음 세 값 중에 하나이다. SQL_HANDLE_ENV
SQL_HANDLE_DBC
SQL_HANDLE_STMT
SQLHANDLE InputHandle 입력 입력 핸들 HandleType이 SQL_HANDLE_ENV이면 InputHandle은 SQL_NULL_HANDLE이고 SQL_HANDLE_DBC이면 환경 핸들이어야 하고 SQL_HANDLE_STMT이면 연결 핸들이어야 한다.
SQLHANDLE * OutputHandlePtr 출력 할당 받은 핸들의 포인터

결괏값#

SQL_SUCCESS
SQL_SUCCESS_WITH_INFO
SQL_INVALID_HANDLE
SQL_ERROR

설 명#

SQLAllocHandle()은 다음 단락에서 묘사될 환경, 연결, 그리고 명령문 핸들을 할당한다.

이 함수는 SQLAllocEnv(), SQLAllocConnect() 및 SQLAllocStmt() 함수들을 대치한다. 환경 핸들을 요구하기 위하여 애플리케이션은 HandleType이 SQL_HANDLE_ENV이고, InputHandle이 SQL_NULL_HANDLE인 SQLAllocHandle()을 호출한다. 연결 핸들을 요구하기 위하여 애플리케이션은 HandleType이 SQL_HANDLE_DBC인 SQLAllocHandle()을 호출하고, 그때의 InputHandle은 유효한 환경 핸들이어야 한다. 명령문 핸들을 요구하기 위하여 애플리케이션은 HandleType이 SQL_HANDLE_STMT인 SQLAllocHandle()을 호출하고, 그때의 InputHandle은 유효한 연결 핸들이어야 한다.

한 애플리케이션에 의해 한 번에 한 개 이상의 환경, 연결, 그리고 명령문 핸들들이 할당 될 수 있는데, 한 프로세스 내의 다른 쓰레드 상에서 같은 환경, 연결, 또는 명령문 핸들은 동시에 사용할 수 없다.

환경 핸들 할당#

환경 핸들은 연결 핸들이 유효하다든지 활성화 돼 있다든지 하는 전역적인 정보를 제공한다.

환경 핸들을 요구하기 위해 애플리케이션은 Handletype이 SQL_HANDLE_ENV이고 InputHandle이 SQL_NULL_HANDLE인 SQLAllocHandle()을 호출한다. Altibase CLI 드라이버는 환경 정보에 필요한 메모리를 할당하고, *OutputHandle에 관련 핸들의 값을 돌려준다. 애플리케이션은 *OutputHandle 값을 환경 핸들을 필요로하는 후속 호출들에 전달한다.

연결 핸들 할당#

연결 핸들은 연결 핸들상에서 명령문 핸들이 유효한가, 트랜잭션이 현재 열려있는가와 같은 정보를 제공한다.

연결 핸들을 요구하기위해, 애플리케이션은 HandleType이 SQL_HANDLE_DBC인 SQLAllocHandle()을 호출한다. InputHandle 인자는 SQLAllocHandle()을 호출함으로서 반환된 환경 핸들로 설정된다. Altibase CLI 드라이버는 연결 정보에 필요한 메모리를 할당하고, *OutputHandle에 관련 핸들의 값을 돌려준다. 애플리케이션은 *OutputHandle 값을 연결 핸들을 필요로하는 후속 호출들에 전달한다.

명령문 핸들 할당#

명령문 핸들은 SQL문 처리에 대한 오류 메세지 그리고 상태 정보등과 같은 명령문 정보를 제공한다.

명령문 핸들을 요구하기위해, 애플리케이션은 데이터베이스와 연결하고, SQL 문을 보내기 전에 SQLAllocHandle()을 호출한다. 이러한 호출에서 HandleType은 SQL_HANDLE_STMT로 설정돼야만 하고 InputHandle 인자는 SQLAllocHandle()을 호출함으로서 반환된 연결 핸들로 설정되야만 한다. Altibase CLI 드라이버는 명령문 정보에 필요한 메모리를 할당하고, 명시된 연결로 명령문 핸들과 연결하고, *OutputHandle에 관련 핸들의 값을 돌려준다. 애플리케이션은 *OutputHandle 값을 명령문 핸들을 필요로하는 후속 호출들에 전달한다.

진 단#

SQLSTATE 설명 부연설명
HY000 일반 오류
HY001 메모리 할당 오류 명시된 핸들을 위한 메모리 할당에 실패 함.
HY009 유효하지 않은 인자 (null pointer) 사용 OutputHandlePtr가 null pointer 임.

관련 함수#

SQLExecDirect
SQLExecute
SQLFreeHandle
SQLPrepare
SQLSetConnectAttr
SQLSetEnvAttr
SQLSetStmtAttr

예 제#

< $ALTIBASE_HOME/sample/SQLCLI/demo_meta1.cpp 참고 >

/* Environment 을 위한 메모리를 할당 */
if (SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HENV, &env) != SQL_SUCCESS)
{
    printf("SQLAllocEnv error!!\n");
    return SQL_ERROR;
}

/* Connection 을 위한 메모리를 할당  */
if (SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc) != SQL_SUCCESS)
{   
    printf("SQLAllocConnect error!!\n");
    return SQL_ERROR;
}