부록 A: ODBC 오류 코드
이 항목에서는 ODBC 3의 SQLSTATE 값에 대해 설명합니다.x. ODBC 3에 대한 자세한 내용을 보려면x SQLSTATE 값은 SQLSTATE 매핑을 참조 하세요.
SQLGetDiagRec 또는 SQLGetDiagField 는 Open Group Data Management: 구조적 쿼리 언어(SQL), 버전 2 (1995년 3월)에 정의된 대로 SQLSTATE 값을 반환합니다. SQLSTATE 값은 5자를 포함하는 문자열입니다. 다음 표에서는 드라이버가 SQLGetDiagRec에 대해 반환할 수 있는 SQLSTATE 값을 나열합니다.
SQLSTATE에 대해 반환되는 문자열 값은 2자 클래스 값과 3자 서브클래스 값으로 구성됩니다. 클래스 값 "01"은 경고를 나타내며 SQL_SUCCESS_WITH_INFO 반환 코드와 함께 제공됩니다. "IM" 클래스를 제외한 "01" 이외의 클래스 값은 오류를 나타내며 반환 값 SQL_ERROR 함께 제공됩니다. "IM" 클래스는 ODBC 자체의 구현에서 파생되는 경고 및 오류와 관련이 있습니다. 모든 클래스의 하위 클래스 값 "000"은 해당 SQLSTATE에 대한 하위 클래스가 없음을 나타냅니다. 클래스 및 하위 클래스 값의 할당은 SQL-92에 의해 정의됩니다.
참고 항목
함수의 성공적인 실행은 일반적으로 SQL_SUCCESS 반환 값으로 표시되지만 SQLSTATE 00000도 성공을 나타냅니다.
SQLSTATE | Error | 에서 반환할 수 있습니다. |
---|---|---|
01000 | 일반 경고 | 다음을 제외한 모든 ODBC 함수: SQLError SQLGetDiagField SQLGetDiagRec |
01001 | 커서 작업 충돌 | SQLExecDirect SQLExecute SQLParamData Sqlsetpos |
01002 | 연결 끊기 오류 | SQLDisconnect |
01003 | set 함수에서 NULL 값 제거 | SQLExecDirect SQLExecute SQLParamData |
01004 | 문자열 데이터, 오른쪽 잘림 | SQLBrowseConnect SQLBulkOperations SQLColAttribute SQLDataSources SQLDescribeCol SQLDriverConnect SQLDrivers SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLGetConnectAttr SQLGetCursorName Sqlgetdata SQLGetDescField SQLGetDescRec SQLGetEnvAttr Sqlgetinfo SQLGetStmtAttr SQLNative Sql SQLParamData Sqlputdata SQLSetCursorName |
01006 | 권한이 취소되지 않음 | SQLExecDirect SQLExecute SQLParamData |
01007 | 권한이 부여되지 않음 | SQLExecDirect SQLExecute SQLParamData |
01S00 | 잘못된 연결 문자열 특성 | SQLBrowseConnect SQLDriverConnec |
01S01 | 행의 오류 | SQLBulkOperations SQLExtendedFetch Sqlsetpos |
01S02 | 옵션 값이 변경됨 | SQLBrowseConnect SQLConnect SQLDriverConnect SQLExecDirect SQLExecute SQLParamData SQLPrepare SQLSetConnectAttr SQLSetDescField SQLSetEnvAttr SQLSetStmtAttr |
01S06 | 결과 집합이 첫 번째 행 집합을 반환하기 전에 페치 시도 | SQLExtendedFetch SQLFetchScroll |
01S07 | 분수 잘림 | SQLBulkOperations SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll Sqlgetdata SQLParamData Sqlsetpos |
01S08 | 파일 DSN을 저장하는 동안 오류가 발생했습니다. | SQLDriverConnect |
01S09 | 잘못된 키워드 | SQLDriverConnect |
07001 | 잘못된 매개 변수 수 | SQLExecDirect SQLExecute |
07002 | COUNT 필드가 잘못되었습니다. | SQLExecDirect SQLExecute SQLParamData |
07005 | 커서 사양이 아닌 준비된 문 | SQLColAttribute SQLDescribeCol |
07006 | 제한된 데이터 형식 특성 위반 | Sqlbindcol SQLBindParameter SQLBulkOperations SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll Sqlgetdata SQLParamData Sqlputdata Sqlsetpos |
07009 | 설명자 인덱스가 잘못되었습니다. | Sqlbindcol SQLBindParameter SQLBulkOperations SQLColAttribute SQLDescribeCol SQLDescribeParam SQLFetch SQLFetchScroll Sqlgetdata SQLGetDescField SQLGetDescRec SQLParamData SQLSetDescField SQLSetDescRecSQLSetPos |
07S01 | 기본 매개 변수를 잘못 사용했습니다. | SQLExecDirect SQLExecute SQLParamData Sqlputdata |
08001 | 클라이언트가 연결을 설정할 수 없음 | SQLBrowseConnect SQLConnect SQLDriverConnect |
08002 | 사용 중인 연결 이름 | SQLBrowseConnect SQLConnect SQLDriverConnect SQLSetConnectAttr |
08003 | 연결이 열리지 않음 | SQLAllocHandle SQLDisconnect SQLEndTran SQLGetConnectAttr Sqlgetinfo SQLNativeSql SQLSetConnectAttr |
08004 | 서버에서 연결을 거부했습니다. | SQLBrowseConnect SQLConnect SQLDriverConnect |
08007 | 트랜잭션 중 연결 실패 | SQLEndTran |
08S01 | 통신 링크 실패 | SQLBrowseConnect SQLColumnPrivileges SQLColumns SQLConnect SQLCopyDesc SQLDescribeCol SQLDescribeParam SQLDriverConnect SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLForeignKeys SQLGetConnectAttr Sqlgetdata SQLGetDescField SQLGetDescRec SQLGetFunctions Sqlgetinfo SQLGetTypeInfo SQLMoreResults SQLNativeSql SQLNumParams SQLNumResultCols SQLParamData SQLPrepare SQLPrimaryKeys SQLProcedureColumns SQLProcedures Sqlputdata SQLSetConnectAttr SQLSetDescField SQLSetDescRec SQLSetEnvAttr SQLSetStmtAttr SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
21S01 | 값 삽입 목록이 열 목록과 일치하지 않음 | SQLExecDirect SQLPrepare |
21S02 | 파생 테이블의 정도가 열 목록과 일치하지 않음 | SQLBulkOperations SQLExecDirect SQLExecute SQLParamData SQLPrepare Sqlsetpos |
22001 | 문자열 데이터, 오른쪽 잘림 | SQLBulkOperations SQLExecDirect SQLExecute SQLFetch SQLFetchScroll SQLParamData Sqlputdata SQLSetDescField Sqlsetpos |
22002 | 표시기 변수가 필요하지만 제공되지 않음 | SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll Sqlgetdata SQLParamData |
22003 | 숫자 값이 범위를 벗어났습니다. | SQLBulkOperations SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll Sqlgetdata Sqlgetinfo SQLParamData Sqlputdata Sqlsetpos |
22007 | 날짜/시간 형식이 잘못되었습니다. | SQLBulkOperations SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll Sqlgetdata SQLParamData Sqlputdata Sqlsetpos |
22008 | 날짜/시간 필드 오버플로 | SQLBulkOperations SQLExecDirect QLParamData Sqlputdata |
22012 | 0으로 나누기 | SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll Sqlgetdata Sqlputdata |
22015 | 간격 필드 오버플로 | SQLBulkOperations SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll Sqlgetdata SQLParamData Sqlputdata Sqlsetpos |
22018 | 캐스트 사양에 잘못된 문자 값 | SQLBulkOperations SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll Sqlgetdata SQLParamData Sqlputdata Sqlsetpos |
22019 | 잘못된 이스케이프 문자 | SQLExecDirect SQLExecute SQLPrepare |
22025 | 잘못된 이스케이프 시퀀스 | SQLExecDirect SQLExecute SQLPrepare |
22026 | 문자열 데이터, 길이 불일치 | SQLParamData |
23000 | 무결성 제약 조건 위반 | SQLBulkOperations SQLExecDirect SQLExecute SQLParamData Sqlsetpos |
24000 | 커서 상태가 잘못되었습니다. | SQLBulkOperations SQLCloseCursor SQLColumnPrivileges SQLColumns SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLForeignKeys Sqlgetdata SQLGetStmtAttr SQLGetTypeInfo SQLNativeSql SQLPrepare SQLPrimaryKeys SQLProcedureColumns SQLProcedures SQLSetConnectAttr SQLSetCursorName Sqlsetpos SQLSetStmtAttr SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
25000 | 잘못된 트랜잭션 상태 | SQLDisconnect |
25S01 | 트랜잭션 상태 | SQLEndTran |
25S02 | 트랜잭션이 여전히 활성 상태입니다. | SQLEndTran |
25S03 | 트랜잭션 롤백 | SQLEndTran |
28000 | 잘못된 권한 부여 사양 | SQLBrowseConnect SQLConnect SQLDriverConnect |
34000 | 커서 이름이 잘못되었습니다. | SQLExecDirect SQLPrepare SQLSetCursorName |
3C000 | 중복 커서 이름 | SQLSetCursorName |
3D000 | 카탈로그 이름이 잘못되었습니다. | SQLExecDirect SQLPrepare SQLSetConnectAttr |
3F000 | 잘못된 스키마 이름 | SQLExecDirect SQLPrepare |
40001 | Serialization 실패 | SQLBulkOperations SQLColumnPrivileges SQLColumns SQLEndTran SQLExecDirect SQLExecute SQLFetch SQLFetchScroll SQLForeignKeys SQLGetTypeInfo SQLMoreResults SQLParamData SQLPrimaryKeys SQLProcedureColumns SQLProcedures Sqlsetpos SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
40002 | 무결성 제약 조건 위반 | SQLEndTran |
40003 | 문 완성을 알 수 없음 | SQLBulkOperations SQLColumnPrivileges SQLColumns SQLExecDirect SQLExecute SQLFetch SQLFetchScroll SQLForeignKeys SQLGetTypeInfo SQLMoreResults SQLPrimaryKeys SQLProcedureColumns SQLProcedures SQLParamData Sqlsetpos SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
42000 | 구문 오류 또는 액세스 위반 | SQLBulkOperations SQLExecDirect SQLExecute SQLParamData SQLPrepare Sqlsetpos |
42S01 | 기본 테이블 또는 뷰가 이미 있음 | SQLExecDirect SQLPrepare |
42S02 | 기본 테이블 또는 뷰를 찾을 수 없음 | SQLExecDirect SQLPrepare |
42S11 | 인덱스가 이미 있음 | SQLExecDirect SQLPrepare |
42S12 | 인덱스 찾을 수 없음 | SQLExecDirect SQLPrepare |
42S21 | 열이 이미 있음 | SQLExecDirect SQLPrepare |
42S22 | 열을 찾을 수 없음 | SQLExecDirect SQLPrepare |
44000 | WITH CHECK OPTION 위반 | SQLBulkOperations SQLExecDirect SQLExecute SQLParamData Sqlsetpos |
HY000 | 일반 오류 | 다음을 제외한 모든 ODBC 함수: SQLError SQLGetDiagField SQLGetDiagRec |
HY001 | 메모리 할당 오류 | 다음을 제외한 모든 ODBC 함수: SQLError SQLGetDiagField SQLGetDiagRec |
HY003 | 잘못된 애플리케이션 버퍼 유형 | Sqlbindcol SQLBindParameter Sqlgetdata |
HY004 | 잘못된 SQL 데이터 형식 | SQLBindParameter SQLGetTypeInfo |
HY007 | 연결된 문이 준비되지 않았습니다. | SQLCopyDesc SQLGetDescField SQLGetDescRec |
HY008 | 작업이 취소됨 | 비동기적으로 처리할 수 있는 모든 ODBC 함수: SQLBrowseConnect SQLBulkOperations SQLColAttribute SQLColumnPrivileges SQLColumns SQLConnect SQLDescribeCol SQLDescribeParam SQLDisconnect SQLDriverConnect SQLEndTran SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLForeignKeys Sqlgetdata SQLGetTypeInfo SQLMoreResults SQLNumParams SQLNumResultCols SQLParamData SQLPrepare SQLPrimaryKeys SQLProcedureColumns SQLProcedures Sqlputdata SQLSetConnectAttr Sqlsetpos SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
HY009 | null 포인터를 잘못 사용했습니다. | SQLAllocHandle SQLBindParameter SQLBulkOperations SQLColumnPrivileges SQLColumns SQLExecDirect SQLForeignKeys SQLGetCursorName Sqlgetdata SQLGetFunctions SQLNativeSql SQLPrepare SQLPrimaryKeys SQLProcedureColumns SQLProcedures Sqlputdata SQLSetConnectAttr SQLSetCursorName SQLSetEnvAttr SQLSetStmtAttr SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
HY010 | 함수 시퀀스 오류 | SQLAllocHandle Sqlbindcol SQLBindParameter SQLBulkOperations SQLCloseCursor SQLColAttribute SQLColumnPrivileges SQLColumns SQLCopyDesc SQLDescribeCol SQLDescribeParam SQLDisconnect SQLEndTran SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLForeignKeys SQLFreeHandle SQLFreeStmt SQLGetConnectAttr SQLGetCursorName Sqlgetdata SQLGetDescField SQLGetDescRec SQLGetFunctions SQLGetStmtAttr SQLGetTypeInfo SQLMoreResults SQLNumParams SQLNumResultCols SQLParamData SQLPrepare SQLPrimaryKeys SQLProcedureColumns SQLProcedures Sqlputdata SQLRowCount SQLSetConnectAttr SQLSetCursorName SQLSetDescField SQLSetEnvAttr SQLSetDescRec Sqlsetpos SQLSetStmtAttr SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
HY011 | 지금은 특성을 설정할 수 없습니다. | SQLBulkOperations SQLParamData QLSetPos SQLSetStmtAttr |
HY012 | 잘못된 트랜잭션 작업 코드 | SQLEndTran |
HY013 | 메모리 관리 오류 | 다음을 제외한 모든 ODBC 함수: SQLGetDiagField SQLGetDiagRec |
HY014 | 초과된 핸들 수에 대한 제한 | SQLAllocHandle |
HY015 | 사용할 수 있는 커서 이름 없음 | SQLGetCursorName |
HY016 | 구현 행 설명자를 수정할 수 없음 | SQLCopyDesc SQLSetDescField SQLSetDescRec |
HY017 | 자동으로 할당된 설명자 핸들을 잘못 사용했습니다. | SQLFreeHandle SQLSetStmtAttr |
HY018 | 서버에서 취소 요청을 거부했습니다. | SQLCancel |
HY019 | 문자가 아닌 데이터와 이진 데이터가 아닌 데이터로 전송됨 | Sqlputdata |
HY020 | null 값을 연결하려고 시도합니다. | Sqlputdata |
HY021 | 일관되지 않은 설명자 정보 | SQLBindParameter SQLCopyDesc SQLGetDescField SQLSetDescField SQLSetDescRec |
HY024 | 잘못된 특성 값 | SQLSetConnectAttr SQLSetEnvAttr SQLSetStmtAttr |
HY090 | 잘못된 문자열 또는 버퍼 길이 | Sqlbindcol SQLBindParameter SQLBrowseConnect SQLBulkOperations SQLColAttribute SQLColumnPrivileges SQLColumns SQLConnect SQLDataSources SQLDescribeCol SQLDriverConnect SQLDrivers SQLExecDirect SQLExecute SQLFetch SQLFetchScroll SQLForeignKeys SQLGetConnectAttr SQLGetCursorName Sqlgetdata SQLGetDescField Sqlgetinfo SQLGetStmtAttr SQLNativeSql SQLParamData SQLPrepare SQLPrimaryKeys SQLProcedureColumns SQLProcedures Sqlputdata SQLSetConnectAttr SQLSetCursorName SQLSetDescField SQLSetDescRec SQLSetEnvAttr SQLSetStmtAttr Sqlsetpos SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
HY091 | 설명자 필드 식별자가 잘못되었습니다. | SQLColAttribute SQLGetDescField SQLSetDescField |
HY092 | 잘못된 특성/옵션 식별자 | SQLAllocHandle QLBulkOperations SQLCopyDesc SQLDriverConnect SQLEndTran SQLFreeStmt SQLGetConnectAttr SQLGetEnvAttr QLParamData SQLSetConnectAttr SQLSetDescField SQLSetEnvAttr Sqlsetpos SQLSetStmtAttr |
HY095 | 함수 형식이 범위를 벗어났습니다. | SQLGetFunctions |
HY096 | 잘못된 정보 유형 | Sqlgetinfo |
HY097 | 열 형식이 범위를 벗어났습니다. | SQLSpecialColumns |
HY098 | 범위 유형이 범위를 벗어났습니다. | SQLSpecialColumns |
HY099 | Nullable 형식이 범위를 벗어났습니다. | SQLSpecialColumns |
HY100 | 고유성 옵션 유형이 범위를 벗어났습니다. | SQLStatistics |
HY101 | 정확도 옵션 유형이 범위를 벗어났습니다. | SQLStatistics |
HY103 | 잘못된 검색 코드 | SQLDataSources SQLDrivers |
HY104 | 전체 자릿수 또는 배율 값이 잘못되었습니다. | SQLBindParameter |
HY105 | 잘못된 매개 변수 형식 | SQLBindParameter SQLExecDirect SQLExecute SQLParamData SQLSetDescField |
HY106 | 페치 형식이 범위를 벗어났습니다. | SQLExtendedFetch SQLFetchScroll |
HY107 | 행 값이 범위를 벗어났습니다. | SQLExtendedFetch SQLFetch SQLFetchScroll Sqlsetpos |
HY109 | 커서 위치가 잘못되었습니다. | SQLExecDirect SQLExecute Sqlgetdata SQLGetStmtAttr SQLNativeSql SQLParamData Sqlsetpos |
HY110 | 드라이버 완료가 잘못되었습니다. | SQLDriverConnect |
HY111 | 책갈피 값이 잘못되었습니다. | SQLExtendedFetch SQLFetchScroll |
HYC00 | 선택적 기능이 구현되지 않음 | Sqlbindcol SQLBindParameter SQLBulkOperations SQLColAttribute SQLColumnPrivileges SQLColumns SQLDriverConnect SQLEndTran SQLExecDirect SQLExecute SQLExtendedFetch SQLFetch SQLFetchScroll SQLForeignKeys SQLGetConnectAttr Sqlgetdata SQLGetEnvAttr Sqlgetinfo SQLGetStmtAttr SQLGetTypeInfo SQLParamData SQLPrepare SQLPrimaryKeys SQLProcedureColumns SQLProcedures SQLSetConnectAttr SQLSetEnvAttr Sqlsetpos SQLSetStmtAttr SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
HYT00 | 시간 제한 만료됨 | SQLBrowseConnect SQLBulkOperations SQLColumnPrivileges SQLColumns SQLConnect SQLDriverConnect SQLExecDirect SQLExecute SQLExtendedFetch SQLForeignKeys SQLGetTypeInfo SQLParamData SQLPrepare SQLPrimaryKeys SQLProcedureColumns SQLProcedures Sqlsetpos SQLSpecialColumns SQLStatistics SQLTablePrivileges SQLTables |
HYT01 | 연결 제한 시간이 만료됨 | 다음을 제외한 모든 ODBC 함수: SQLDrivers SQLDataSources SQLGetEnvAttr SQLSetEnvAttr |
IM001 | 드라이버는 이 함수를 지원하지 않습니다. | 다음을 제외한 모든 ODBC 함수: SQLAllocHandle SQLDataSources SQLDrivers SQLFreeHandle SQLGetFunctions |
IM002 | 데이터 원본 이름을 찾을 수 없고 기본 드라이버가 지정되지 않았습니다. | SQLBrowseConnect SQLConnect SQLDriverConnect |
IM003 | 지정된 드라이버를 로드할 수 없습니다. | SQLBrowseConnect SQLConnect SQLDriverConnect |
IM004 | SQL_HANDLE_ENV 드라이버의 SQLAllocHandle 실패 | SQLBrowseConnect SQLConnect SQLDriverConnect |
IM005 | SQL_HANDLE_DBC 드라이버의 SQLAllocHandle 이 실패했습니다. | SQLBrowseConnect SQLConnect SQLDriverConnect |
IM006 | 드라이버의 SQLSetConnectAttr 실패 | SQLBrowseConnect SQLConnect SQLDriverConnect |
IM007 | 데이터 원본 또는 드라이버가 지정되지 않았습니다. 대화 금지됨 | SQLDriverConnect |
IM008 | 대화 상자 실패 | SQLDriverConnect |
IM009 | 번역 DLL을 로드할 수 없음 | SQLBrowseConnect SQLConnect SQLDriverConnect SQLSetConnectAttr |
IM010 | 데이터 원본 이름이 너무 깁니다. | SQLBrowseConnect SQLConnect SQLDriverConnect |
IM011 | 드라이버 이름이 너무 깁니다. | SQLBrowseConnect SQLDriverConnect |
IM012 | DRIVER 키워드 구문 오류 | SQLBrowseConnect SQLDriverConnect |
IM013 | 추적 파일 오류 | 모든 ODBC 함수. |
IM014 | 파일 DSN의 이름이 잘못되었습니다. | SQLDriverConnect |
IM015 | 손상된 파일 데이터 원본 | SQLDriverConnect |