本主題討論 ODBC 2.x 與 ODBC 3.x 的 SQLSTATE 值。 欲了解更多關於 ODBC 3.x SQLSTATE 值的資訊,請參閱 附錄 A:ODBC 錯誤代碼。
在 ODBC 3.x 中,回傳 HYxxx SQLSTATEs 取代 S1xxx,回傳 42Sxx SQLSTATEs 取代 S00XX。 此舉是為了符合開放團體與ISO標準。 在許多情況下,映射並非一對一,因為標準已重新定義多個 SQLSTATE 的解釋。
當 ODBC 2.x 應用程式升級為 ODBC 3.x 應用程式時,應用程式必須更改為預期 ODBC 3.x 的 SQLSTATE,而非 ODBC 2.x 的 SQLSTATE。 下表列出每個 ODBC 2.x SQLSTATE 對應的 ODBC 3.x SQLSTATE。
當 SQL_ATTR_ODBC_VERSION 環境屬性設為 SQL_OV_ODBC2 時,當呼叫 SQLGetDiagField 或 SQLGetDiagRec 時,驅動程式會發布 ODBC 2.x 的 SQLSTATE,而非 ODBC 3.x 的 SQLSTATE。 特定映射可透過下表第 1 欄的 ODBC 2.x SQLSTATE 來判斷,該欄位對應第 2 欄的 ODBC 3.x SQLSTATE。
| ODBC 2.x SQLSTATE | ODBC 3.x SQLSTATE | 評論 |
|---|---|---|
| 01S03 | 01001 | |
| 01S04 | 01001 | |
| 22003 | HY019 | |
| 22008 | 22007 | |
| 22005 | 22018 | |
| 24000 | 07005 | |
| 37000 | 42000 | |
| 70100 | HY018 | |
| S0001 | 42S01 | |
| S0002 | 42S02 | |
| S0011 | 42S11 | |
| S0012 | 42S12 | |
| S0021 | 42S21 | |
| S0022 | 42S22 | |
| S0023 | 42S23 | |
| S1000 | HY000 | |
| S1001 | HY001 | |
| S1002 | 07009 | 如果底層函式為 SQLBindCol、SQLColAttribute、SQLExtendedFetch、SQLFetch、SQLFetch、SQLFetchScroll 或 SQLGetData,則 ODBC 2.x SQLSTATE S1002 會映射到 ODBC 3.x SQLSTATE 07009。 |
| S1003 | HY003 | |
| S1004 | HY004 | |
| S1008 | HY008 | |
| S1009 | HY009 | 因為空指標的無效使用而被回傳。 |
| S1009 | HY024 | 因屬性值無效而回傳。 |
| S1009 | HY092 | 當併發控制設為唯讀時,透過呼叫 SQLSetPos 更新或刪除資料,或透過呼叫 SQLBulkOperations 新增、更新或刪除資料。 |
| S1010 | HY007 HY010 | 當在呼叫 SQLPrepare、SQLExecDirect 或 StatementHandle 的目錄函式前,先呼叫 SQLDescribeCol 時,SQLSTATE S1010 會映射到 SQLSTATE HY007。 否則,SQLSTATE S1010 會映射到 SQLSTATE HY010。 |
| S1011 | HY011 | |
| S1012 | HY012 | |
| S1090 | HY090 | |
| S1091 | HY091 | |
| S1092 | HY092 | |
| S1093 | 07009 | 如果底層函式是 SQLBindParameter 或 SQLDescribeParam,則 ODBC 3.x SQLSTATE 07009 會映射到 ODBC 2.x SQLSTATE S1093。 |
| S1096 | HY096 | |
| S1097 | HY097 | |
| S1098 | HY098 | |
| S1099 | HY099 | |
| S1100 | HY100 | |
| S1101 | HY101 | |
| S1103 | HY103 | |
| S1104 | HY104 | |
| S1105 | HY105 | |
| S1106 | HY106 | |
| S1107 | HY107 | |
| S1108 | HY108 | |
| S1109 | HY109 | |
| S1110 | HY110 | |
| S1111 | HY111 | |
| S1C00 | HYC00 | |
| 第1季第00集 | HYT00 |
備註
ODBC 3.x SQLSTATE 07008 映射到 ODBC 2.x SQLSTATE S1000。