SQLSTATE マッピング
このトピックでは、ODBC 2.x と ODBC 3.x の SQLSTATE 値について説明します。 ODBC 3.x SQLSTATE 値の詳細については、「付録 A: ODBC エラー コード」を参照してください。
ODBC 3.x では、S1xxx ではなく HYxxx SQLSTATE が返され、S00XX ではなく 42Sxx SQLSTATE が返されます。 これは、Open Group と ISO 標準に合わせて行われました。 多くの場合、標準では複数の SQLSTATE の解釈が再定義されているため、マッピングは 1 対 1 ではありません。
ODBC 2.x アプリケーションを ODBC 3.x アプリケーションにアップグレードする場合、ODBC 2.x SQLSTATE ではなく ODBC 3.x SQLSTATE を想定するようにアプリケーションを変更する必要があります。 次の表に、各 ODBC 2.x SQLSTATE がマップされている ODBC 3.x SQLSTATE を示します。
SQL_ATTR_ODBC_VERSION 環境属性が SQL_OV_ODBC2 に設定されている場合、SQLGetDiagField または SQLGetDiagRec が呼び出されると、ドライバーは ODBC 3.x SQLSTATE ではなく ODBC 2.x SQLSTATE をポストします。 特定のマッピングは、次の表の列 1 の ODBC 2.x SQLSTATE を、列 2 の ODBC 3.x SQLSTATE に対応する点に注意することで決定できます。
ODBC 2.x SQLSTATE | ODBC 3.x SQLSTATE | Comments |
---|---|---|
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、SQLFetchScroll、または SQLGetData の場合、ODBC 2.x SQLSTATE S1002 は ODBC 3.x SQLSTATE 07009 にマップされます。 |
S1003 | HY003 | |
S1004 | HY004 | |
S1008 | HY008 | |
S1009 | HY009 | 無効な null ポインターに使用する場合に返されます。 |
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 | |
S1T00 | HYT00 |
Note
ODBC 3.x SQLSTATE 07008 は、ODBC 2.x SQLSTATE S1000 にマップされます。