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.