SQLSTATE映射

当您使用 ODBC 3.0 驱动程序调用 SQLGetDiagRec()SQLError() 时,多个SQLSTATEs会有所不同。 无论设置了哪些环境属性,所有已弃用的函数都会继续返回 ODBC 2.0 SQLSTATEs。

以下列表显示了受影响的SQLSTATEs:
  • HYxxx SQLSTATEs取代 S1xxx SQLSTATEs
  • 42Sxx SQL STATEs 替换 S00xx SQLSTATEs
  • 多个SQLSTATEs被重新定义
当 ODBC 2.0 应用程序升级到 ODBC 3.0 时,必须更改应用程序以启用 ODBC 3.0 SQLSTATEs。 ODBC 3.0 应用程序可以设置环境属性 SQL_ATTR_ODBC_VERSION = SQL_OV_ODBC2 ,使 Db2 ODBC 3.0 驱动程序能够返回 ODBC 2.0 SQLSTATEs。
下表列出了 ODBC 2.0 至 ODBC 3.0 SQLSTATE的映射。
表 1. ODBC 2.0 发送至 ODBC 3.0 SQLSTATE 映射
ODBC 2.0 SQLSTATE ODBC 3.0 SQLSTATE
2 20 03 HY019
22007 22008
22005 22018
37000 42000
S000 1 42S0 1
S000 2 42S02
S001 1 42S11
S001 2 42S12
S002 1 42S21
S0022 42S22
S002 3 42S23
S1000 HY000
S1001 HY001
S1002 HY002
S1003 HY003
S1004 HY004
S1009 HY00 9或HY024

S1009 映射到 HY009 ,原因是无效使用空指针;S1009 映射到 HY024 ,原因是无效属性值。

S1010 HY010
S101 1 HY011
S1012 HY012
S1013 HY013
S1014 HY014
S1015 HY01 5
S1019 HY019
S1090 HY090
S1091 HY091
S1092 HY092
S1093 HY093
S1096 HY096
S1097 HY097
S1098 HY098
S1099 HY099
S1100 HY100
S1101 HY101
S1103 HY103
S1104 HY104
S1105 HY105
S1106 HY106
S1107 HY107
S1110 HY110
S1501 HY501
S1506 HY506
S1C00 HYC0 0