콘텐츠로 이동

SQLError

SQLError#

오류, 경고, 그리고 상태 정보를 포함한 진단 값들을 반환한다.

Unicode SQLErrorW() 동작은 SQLError()와 동일하다.

구 문#

SQLRETURN  SQLError (
    SQLHENV         env,
    SQLHDBC         dbc,
    SQLHSTMT        stmt,
    SQLCHAR *       state,
    SQLINTEGER *    err,
    SQLCHAR *       msg,
    SQLSMALLINT     msgMax,
    SQLSMALLINT *   msgLength );

인 자#

자료유형 인자 사용 설명
SQLHENV env 입력 환경 핸들
SQLHDBC dbc 입력 연결 핸들
SQLHSTMT stmt 입력 명령문 핸들
SQLCHAR * state 출력 5 문자 SQLSTATE 코드의 포인터
SQLINTEGER * err 출력 Altibase 고유 오류 코드의 포인터
SQLCHAR * msg 출력 진단 메세지 텍스트 문자열의 포인터
SQLSMALLINT msgMax 입력 *msg 버퍼의 문자 개수
SQLSMALLINT * msgLength 출력 *msg에 반환이 가능한 총 바이트 수 (null-termination 문자 제외)의 포인터

결괏값#

SQL_SUCCESS
SQL_SUCCESS_WITH_INFO
SQL_INVALID_HANDLE
SQL_ERROR

설 명#

SQLSTATE는 X/OPEN SQL CAE와 X/OPEN SQLCLI 스냅샷에 의해 정의된 것과 같다.

다음과 연관된 진단 정보를 얻을 수 있다.

환경과 연관된 진단 정보를 얻으려면 유효한 환경 핸들을 전달하시오. dbcstmt를 각각 SQL_NULL_DBC와 SQL_NULL_STMT로 설정하시오.

연결과 연관된 진단 정보를 얻으려면 유효한 데이터베이스 연결 핸들을 전달하고 stmt를 SQL_NULL_STMT로 설정하시오. 인수 env는 무시된다.

명령문과 연관된 진단 정보를 얻으려면 유효한 명령문 핸들을 전달하시오. envdbc 인수는 무시된다.

한 Altibase CLI 함수에 의해 생성된 진단 정보가 SQLError() 이외의 함수가 같은 핸들로 호출되기 전에 검색되지 않으면, 이전 함수 호출에 대한 정보가 손실된다. 두 번째 Altibase CLI 함수 호출에 대해 생성된 진단 정보가 있는지에 관계 없이 사실이다.

오류 메세지가 잘리지 않게 하려면 버퍼길이를 SQL_MAX_MESSAGE_LENGTH + 1 로 선언한다. 메세지 텍스트는 이보다 길어질 수 없다.

예 제#

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

SQLINTEGER errNo;
SQLSMALLINT msgLength;
SQLCHAR errMsg[MSG_LEN];

if (SQLError ( SQL_NULL_HENV, aCon, aStmt,
                   NULL, &errNo,
                   errMsg, MSG_LEN, &msgLength ) == SQL_SUCCESS)
{
        printf(" Error : # %ld, %s\n", errNo, errMsg);
}