附錄 A:ODBC 錯誤碼
本主題討論 ODBC 3 的 SQLSTATE 值。 x . 如需 ODBC 3 的詳細資訊。 x SQLSTATE 值,請參閱 SQLSTATE 對應 。
SQLGetDiagRec 或 SQLGetDiagField 會傳回 SQLSTATE 值,如 Open Group Data Management:結構化查詢語言(SQL),第 2 版(1995 年 3 月)。 SQLSTATE 值是包含五個字元的字串。 下表列出驅動程式可以針對 SQLGetDiagRec 傳回的 SQLSTATE 值。
針對 SQLSTATE 傳回的字元字串值是由兩個字元類別值所組成,後面接著三個字元的子類別值。 「01」 的類別值表示警告,並隨附SQL_SUCCESS_WITH_INFO的傳回碼。 「01」 以外的類別值,除了類別 「IM」之外,表示錯誤,並伴隨傳回值SQL_ERROR。 類別 「IM」 專屬於衍生自 ODBC 本身實作的警告和錯誤。 任何類別中的子類別值 「000」 表示該 SQLSTATE 沒有子類別。 類別和子類別值的指派是由 SQL-92 所定義。
注意
雖然函式的成功執行通常以傳回值SQL_SUCCESS表示,但 SQLSTATE 00000 也表示成功。
SQLSTATE | 錯誤 | 可以從 |
---|---|---|
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 | 除以零 | 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 | 序列化失敗 | 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 | 可為 Null 的類型超出範圍 | 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 |