Mapping di SQLSTATE
In questo argomento vengono illustrati i valori SQLSTATE per ODBC 2.x e ODBC 3.x. Per altre informazioni sui valori SQLSTATE ODBC 3.x, vedere Appendice A: Codici di errore ODBC.
In ODBC 3.x vengono restituiti SQLSTATE HYxxx anziché S1xxx, mentre vengono restituiti SQLSTATE 42Sxx anziché S00XX. Questa operazione è stata eseguita per allinearsi agli standard Open Group e ISO. In molti casi, il mapping non è in rapporto uno a uno perché gli standard hanno ridefinito l'interpretazione di diversi SQLSTATE.
Quando un'applicazione ODBC 2.x viene aggiornata a un'applicazione ODBC 3.x, l'applicazione deve essere modificata per prevedere SQLSTATE ODBC 3.x anziché SQLSTATE ODBC 2.x. Nella tabella seguente sono elencati gli SQLSTATE ODBC 3.x a cui è mappato ogni SQLSTATE ODBC 2.x.
Quando l'attributo di ambiente SQL_ATTR_ODBC_VERSION è impostato su SQL_OV_ODBC2, il driver pubblica SQLSTATE ODBC 2.x anziché SQLSTATE ODBC 3.x quando vengono chiamati SQLGetDiagField o SQLGetDiagRec. È possibile determinare un mapping specifico notando il SQLSTATE ODBC 2.x nella colonna 1 della tabella seguente corrispondente al SQLSTATE ODBC 3.x nella colonna 2.
ODBC 2.x SQLSTATE | ODBC 3.x SQLSTATE | Commenti |
---|---|---|
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 | SQLSTATE S1002 ODBC 2.x viene mappato a SQLSTATE 07009 ODBC 3.x se la funzione sottostante è SQLBindCol, SQLColAttribute, SQLExtendedFetch, SQLFetch, SQLFetchScroll o SQLGetData. |
S1003 | HY003 | |
S1004 | HY004 | |
S1008 | HY008 | |
S1009 | HY009 | Restituito per un uso non valido di un puntatore Null. |
S1009 | HY024 | Restituito per un valore dell’attributo non valido. |
S1009 | HY092 | Restituito per l'aggiornamento o l'eliminazione di dati tramite una chiamata a SQLSetPos o l'aggiunta, l'aggiornamento o l'eliminazione di dati da una chiamata a SQLBulkOperations, quando la concorrenza è di sola lettura. |
S1010 | HY007 HY010 | SQLSTATE S1010 viene mappato a SQLSTATE HY007 quando SQLDescribeCol viene chiamato prima di chiamare SQLPrepare, SQLExecDirect o una funzione catalogo per StatementHandle. In caso contrario, SQLSTATE S1010 viene mappato a SQLSTATE HY010. |
S1011 | HY011 | |
S1012 | HY012 | |
S1090 | HY090 | |
S1091 | HY091 | |
S1092 | HY092 | |
S1093 | 07009 | SQLSTATE 07009 ODBC 3.x viene mappato a SQLSTATE S1093 ODBC 2.x se la funzione sottostante è SQLBindParameter o SQLDescribeParam. |
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 |
Nota
SQLSTATE 07008 ODBC 3.x è stato mappato a SQLSTATE S1000 ODBC 2.x.