附录 A:ODBC 错误代码

本主题讨论 ODBC 3 的 SQLSTATE 值。x. 有关 ODBC 3 的详细信息。x SQLSTATE 值,请参阅 SQLSTATE 映射

SQLGetDiagRecSQLGetDiagField 返回开放组数据管理定义的 SQLSTATE 值:结构化查询语言 (SQL) 版本 2 (1995 年 3 月) 。 SQLSTATE 值是包含五个字符的字符串。 下表列出了驱动程序可为 SQLGetDiagRec 返回的 SQLSTATE 值。

为 SQLSTATE 返回的字符串值由两个字符的类值组成,后跟三个字符的子类值。 类值“01”表示警告,并附带SQL_SUCCESS_WITH_INFO返回代码。 “01”以外的类值(类“IM”除外)指示错误,并附带SQL_ERROR返回值。 类“IM”特定于从 ODBC 本身的实现派生的警告和错误。 任何类中的子类值“000”表示该 SQLSTATE 没有子类。 类和子类值的分配由 SQL-92 定义。

注意

尽管函数的成功执行通常由返回值 SQL_SUCCESS 指示,但 SQLSTATE 00000 也指示成功。

SQLSTATE 错误 可从
01000 常规警告 除以下各项外的所有 ODBC 函数:

SQLError

SQLGetDiagField

SQLGetDiagRec
01001 游标操作冲突 SQLExecDirect

SQLExecute

SQLParamData

SQLSetPos
01002 断开连接错误 SQLDisconnect
01003 set 函数中已消除 NULL 值 SQLExecDirect

SQLExecute

SQLParamData
01004 字符串数据,右截断 SQLBrowseConnect

SQLBulkOperations

SQLColAttribute

SQLDataSources

SQLDescribeCol

SQLDriverConnect

SQLDrivers

SQLExecDirect

SQLExecute

SQLExtendedFetch

SQLFetch

SQLFetchScroll

SQLGetConnectAttr

SQLGetCursorName

SQLGetData

SQLGetDescField

SQLGetDescRec

SQLGetEnvAttr

SQLGetInfo

SQLGetStmtAttr

SQLNative

Sql SQLParamData

SQLPutData

SQLSetCursorName
01006 特权未撤销 SQLExecDirect

SQLExecute

SQLParamData
01007 未授予权限 SQLExecDirect

SQLExecute

SQLParamData
01S00 连接字符串属性无效 SQLBrowseConnect

SQLDriverConnec
01S01 行中出现错误 SQLBulkOperations

SQLExtendedFetch

SQLSetPos
01S02 选项值已更改 SQLBrowseConnect

SQLConnect

SQLDriverConnect

SQLExecDirect

SQLExecute

SQLParamData

SQLPrepare

SQLSetConnectAttr

SQLSetDescField

SQLSetEnvAttr

SQLSetStmtAttr
01S06 尝试在结果集返回第一个行集之前提取 SQLExtendedFetch

SQLFetchScroll
01S07 小数截断 SQLBulkOperations

SQLExecDirect

SQLExecute

SQLExtendedFetch

SQLFetch

SQLFetchScroll

SQLGetData

SQLParamData

SQLSetPos
01S08 保存文件 DSN 时出错 SQLDriverConnect
01S09 无效的关键字 SQLDriverConnect
07001 参数数错误 SQLExecDirect

SQLExecute
07002 COUNT 字段不正确 SQLExecDirect

SQLExecute

SQLParamData
07005 准备好的语句不是 游标规范 SQLColAttribute

SQLDescribeCol
07006 受限数据类型属性冲突 SQLBindCol

SQLBindParameter

SQLBulkOperations

SQLExecDirect

SQLExecute

SQLExtendedFetch

SQLFetch

SQLFetchScroll

SQLGetData

SQLParamData

SQLPutData

SQLSetPos
07009 描述符索引无效 SQLBindCol

SQLBindParameter

SQLBulkOperations

SQLColAttribute

SQLDescribeCol

SQLDescribeParam

SQLFetch

SQLFetchScroll

SQLGetData

SQLGetDescField

SQLGetDescRec

SQLParamData

SQLSetDescField

SQLSetDescRecSQLSetPos
07S01 默认参数的使用无效 SQLExecDirect

SQLExecute

SQLParamData

SQLPutData
08001 客户端无法建立连接 SQLBrowseConnect

SQLConnect

SQLDriverConnect
08002 正在使用的连接名称 SQLBrowseConnect

SQLConnect

SQLDriverConnect

SQLSetConnectAttr
08003 连接未打开 SQLAllocHandle

SQLDisconnect

SQLEndTran

SQLGetConnectAttr

SQLGetInfo

SQLNativeSql

SQLSetConnectAttr
08004 服务器拒绝连接 SQLBrowseConnect

SQLConnect

SQLDriverConnect
08007 事务期间连接失败 SQLEndTran
08S01 通信链接失败 SQLBrowseConnect

SQLColumnPrivileges

SQLColumns

SQLConnect

SQLCopyDesc

SQLDescribeCol

SQLDescribeParam

SQLDriverConnect

SQLExecDirect

SQLExecute

SQLExtendedFetch

SQLFetch

SQLFetchScroll

SQLForeignKeys

SQLGetConnectAttr

SQLGetData

SQLGetDescField

SQLGetDescRec

SQLGetFunctions

SQLGetInfo

SQLGetTypeInfo

SQLMoreResults

SQLNativeSql

SQLNumParams

SQLNumResultCols

SQLParamData

SQLPrepare

SQLPrimaryKeys

SQLProcedureColumns

SQLProcedures

SQLPutData

SQLSetConnectAttr

SQLSetDescField

SQLSetDescRec

SQLSetEnvAttr

SQLSetStmtAttr

SQLSpecialColumns

SQLStatistics

SQLTablePrivileges

SQLTables
21S01 插入值列表与列列表不匹配 SQLExecDirect

SQLPrepare
21S02 派生表的度与列列表不匹配 SQLBulkOperations

SQLExecDirect

SQLExecute

SQLParamData

SQLPrepare

SQLSetPos
22001 字符串数据,右截断 SQLBulkOperations

SQLExecDirect

SQLExecute

SQLFetch

SQLFetchScroll

SQLParamData

SQLPutData

SQLSetDescField

SQLSetPos
22002 需要指示器变量,但未提供 SQLExecDirect

SQLExecute

SQLExtendedFetch

SQLFetch

SQLFetchScroll

SQLGetData

SQLParamData
22003 数值范围外 SQLBulkOperations

SQLExecDirect

SQLExecute

SQLExtendedFetch

SQLFetch

SQLFetchScroll

SQLGetData

SQLGetInfo

SQLParamData

SQLPutData

SQLSetPos
22007 日期/时间格式无效 SQLBulkOperations

SQLExecDirect

SQLExecute

SQLExtendedFetch

SQLFetch

SQLFetchScroll

SQLGetData

SQLParamData

SQLPutData

SQLSetPos
22008 日期时间字段溢出 SQLBulkOperations

SQLExecDirect

QLParamData

SQLPutData
22012 被零除 SQLExecDirect

SQLExecute

SQLExtendedFetch

SQLFetch

SQLFetchScroll

SQLGetData

SQLPutData
22015 间隔字段溢出 SQLBulkOperations

SQLExecDirect

SQLExecute

SQLExtendedFetch

SQLFetch

SQLFetchScroll

SQLGetData

SQLParamData

SQLPutData

SQLSetPos
22018 强制转换规范的字符值无效 SQLBulkOperations

SQLExecDirect

SQLExecute

SQLExtendedFetch

SQLFetch

SQLFetchScroll

SQLGetData

SQLParamData

SQLPutData

SQLSetPos
22019 转义字符无效 SQLExecDirect

SQLExecute

SQLPrepare
22025 转义序列无效 SQLExecDirect

SQLExecute

SQLPrepare
22026 字符串数据,长度不匹配 SQLParamData
23000 完整性约束冲突 SQLBulkOperations

SQLExecDirect

SQLExecute

SQLParamData

SQLSetPos
24000 游标状态无效 SQLBulkOperations

SQLCloseCursor

SQLColumnPrivileges

SQLColumns

SQLExecDirect

SQLExecute

SQLExtendedFetch

SQLFetch

SQLFetchScroll

SQLForeignKeys

SQLGetData

SQLGetStmtAttr

SQLGetTypeInfo

SQLNativeSql

SQLPrepare

SQLPrimaryKeys

SQLProcedureColumns

SQLProcedures

SQLSetConnectAttr

SQLSetCursorName

SQLSetPos

SQLSetStmtAttr

SQLSpecialColumns

SQLStatistics

SQLTablePrivileges

SQLTables
25000 无效的事务状态 SQLDisconnect
25S01 事务状态 SQLEndTran
25S02 事务仍处于活动状态 SQLEndTran
25S03 事务回滚 SQLEndTran
28000 授权规范无效 SQLBrowseConnect

SQLConnect

SQLDriverConnect
34000 游标名称无效 SQLExecDirect

SQLPrepare

SQLSetCursorName
3C000 重复的游标名称 SQLSetCursorName
3D000 目录名称无效 SQLExecDirect

SQLPrepare

SQLSetConnectAttr
3F000 架构名称无效 SQLExecDirect

SQLPrepare
40001 序列化失败 SQLBulkOperations

SQLColumnPrivileges

SQLColumns

SQLEndTran

SQLExecDirect

SQLExecute

SQLFetch

SQLFetchScroll

SQLForeignKeys

SQLGetTypeInfo

SQLMoreResults

SQLParamData

SQLPrimaryKeys

SQLProcedureColumns

SQLProcedures

SQLSetPos

SQLSpecialColumns

SQLStatistics

SQLTablePrivileges

SQLTables
40002 完整性约束冲突 SQLEndTran
40003 语句完成未知 SQLBulkOperations

SQLColumnPrivileges

SQLColumns

SQLExecDirect

SQLExecute

SQLFetch

SQLFetchScroll

SQLForeignKeys

SQLGetTypeInfo

SQLMoreResults

SQLPrimaryKeys

SQLProcedureColumns

SQLProcedures

SQLParamData

SQLSetPos

SQLSpecialColumns

SQLStatistics

SQLTablePrivileges

SQLTables
42000 语法错误或访问冲突 SQLBulkOperations

SQLExecDirect

SQLExecute

SQLParamData

SQLPrepare

SQLSetPos
42S01 基表或视图已存在 SQLExecDirect

SQLPrepare
42S02 找不到基表或视图 SQLExecDirect

SQLPrepare
42S11 索引已存在 SQLExecDirect

SQLPrepare
42S12 找不到索引 SQLExecDirect

SQLPrepare
42S21 列已存在 SQLExecDirect

SQLPrepare
42S22 找不到列 SQLExecDirect

SQLPrepare
44000 WITH CHECK OPTION 冲突 SQLBulkOperations

SQLExecDirect

SQLExecute

SQLParamData

SQLSetPos
HY000 常规错误 除以下各项外的所有 ODBC 函数:

SQLError

SQLGetDiagField

SQLGetDiagRec
HY001 内存分配错误 除以下各项外的所有 ODBC 函数:

SQLError

SQLGetDiagField

SQLGetDiagRec
HY003 应用程序缓冲区类型无效 SQLBindCol

SQLBindParameter

SQLGetData
HY004 SQL 数据类型无效 SQLBindParameter

SQLGetTypeInfo
HY007 未准备关联的语句 SQLCopyDesc

SQLGetDescField

SQLGetDescRec
HY008 操作已取消 可以异步处理的所有 ODBC 函数:

SQLBrowseConnect

SQLBulkOperations

SQLColAttribute

SQLColumnPrivileges

SQLColumns

SQLConnect

SQLDescribeCol

SQLDescribeParam

SQLDisconnect

SQLDriverConnect

SQLEndTran

SQLExecDirect

SQLExecute

SQLExtendedFetch

SQLFetch

SQLFetchScroll

SQLForeignKeys

SQLGetData

SQLGetTypeInfo

SQLMoreResults

SQLNumParams

SQLNumResultCols

SQLParamData

SQLPrepare

SQLPrimaryKeys

SQLProcedureColumns

SQLProcedures

SQLPutData

SQLSetConnectAttr

SQLSetPos

SQLSpecialColumns

SQLStatistics

SQLTablePrivileges

SQLTables
HY009 null 指针的使用无效 SQLAllocHandle

SQLBindParameter

SQLBulkOperations

SQLColumnPrivileges

SQLColumns

SQLExecDirect

SQLForeignKeys

SQLGetCursorName

SQLGetData

SQLGetFunctions

SQLNativeSql

SQLPrepare

SQLPrimaryKeys

SQLProcedureColumns

SQLProcedures

SQLPutData

SQLSetConnectAttr

SQLSetCursorName

SQLSetEnvAttr

SQLSetStmtAttr

SQLSpecialColumns

SQLStatistics

SQLTablePrivileges

SQLTables
HY010 函数序列错误 SQLAllocHandle

SQLBindCol

SQLBindParameter

SQLBulkOperations

SQLCloseCursor

SQLColAttribute

SQLColumnPrivileges

SQLColumns

SQLCopyDesc

SQLDescribeCol

SQLDescribeParam

SQLDisconnect

SQLEndTran

SQLExecDirect

SQLExecute

SQLExtendedFetch

SQLFetch

SQLFetchScroll

SQLForeignKeys

SQLFreeHandle

SQLFreeStmt

SQLGetConnectAttr

SQLGetCursorName

SQLGetData

SQLGetDescField

SQLGetDescRec

SQLGetFunctions

SQLGetStmtAttr

SQLGetTypeInfo

SQLMoreResults

SQLNumParams

SQLNumResultCols

SQLParamData

SQLPrepare

SQLPrimaryKeys

SQLProcedureColumns

SQLProcedures

SQLPutData

SQLRowCount

SQLSetConnectAttr

SQLSetCursorName

SQLSetDescField

SQLSetEnvAttr

SQLSetDescRec

SQLSetPos

SQLSetStmtAttr

SQLSpecialColumns

SQLStatistics

SQLTablePrivileges

SQLTables
HY011 现在无法设置属性 SQLBulkOperations

SQLParamData

QLSetPos

SQLSetStmtAttr
HY012 事务操作代码无效 SQLEndTran
HY013 内存管理错误 除以下各项外的所有 ODBC 函数:

SQLGetDiagField

SQLGetDiagRec
HY014 超出句柄数的限制 SQLAllocHandle
HY015 没有可用的游标名称 SQLGetCursorName
HY016 无法修改实现行描述符 SQLCopyDesc

SQLSetDescField

SQLSetDescRec
HY017 自动分配的描述符句柄使用无效 SQLFreeHandle

SQLSetStmtAttr
HY018 服务器拒绝的取消请求 SQLCancel
HY019 分片发送的非字符和非二进制数据 SQLPutData
HY020 尝试连接 null 值 SQLPutData
HY021 描述符信息不一致 SQLBindParameter

SQLCopyDesc

SQLGetDescField

SQLSetDescField

SQLSetDescRec
HY024 属性值无效 SQLSetConnectAttr

SQLSetEnvAttr

SQLSetStmtAttr
HY090 无效的字符串或缓冲区长度 SQLBindCol

SQLBindParameter

SQLBrowseConnect

SQLBulkOperations

SQLColAttribute

SQLColumnPrivileges

SQLColumns

SQLConnect

SQLDataSources

SQLDescribeCol

SQLDriverConnect

SQLDrivers

SQLExecDirect

SQLExecute

SQLFetch

SQLFetchScroll

SQLForeignKeys

SQLGetConnectAttr

SQLGetCursorName

SQLGetData

SQLGetDescField

SQLGetInfo

SQLGetStmtAttr

SQLNativeSql

SQLParamData

SQLPrepare

SQLPrimaryKeys

SQLProcedureColumns

SQLProcedures

SQLPutData

SQLSetConnectAttr

SQLSetCursorName

SQLSetDescField

SQLSetDescRec

SQLSetEnvAttr

SQLSetStmtAttr

SQLSetPos

SQLSpecialColumns

SQLStatistics

SQLTablePrivileges

SQLTables
HY091 描述符字段标识符无效 SQLColAttribute

SQLGetDescField

SQLSetDescField
HY092 无效的属性/选项标识符 SQLAllocHandle

QLBulkOperations

SQLCopyDesc

SQLDriverConnect

SQLEndTran

SQLFreeStmt

SQLGetConnectAttr

SQLGetEnvAttr

QLParamData

SQLSetConnectAttr

SQLSetDescField

SQLSetEnvAttr

SQLSetPos

SQLSetStmtAttr
HY095 函数类型范围外 SQLGetFunctions
HY096 无效的信息类型 SQLGetInfo
HY097 列类型范围外 SQLSpecialColumns
HY098 范围类型在范围外 SQLSpecialColumns
HY099 范围外可为 Null 的类型 SQLSpecialColumns
HY100 唯一性选项类型范围外 SQLStatistics
HY101 准确度选项类型在范围外 SQLStatistics
HY103 检索代码无效 SQLDataSources

SQLDrivers
HY104 精度或小数位数值无效 SQLBindParameter
HY105 参数类型无效 SQLBindParameter

SQLExecDirect

SQLExecute

SQLParamData

SQLSetDescField
HY106 提取范围外的类型 SQLExtendedFetch

SQLFetchScroll
HY107 行值范围外 SQLExtendedFetch

SQLFetch

SQLFetchScroll

SQLSetPos
HY109 游标位置无效 SQLExecDirect

SQLExecute

SQLGetData

SQLGetStmtAttr

SQLNativeSql

SQLParamData

SQLSetPos
HY110 驱动程序完成无效 SQLDriverConnect
HY111 书签值无效 SQLExtendedFetch

SQLFetchScroll
HYC00 未实现可选功能 SQLBindCol

SQLBindParameter

SQLBulkOperations

SQLColAttribute

SQLColumnPrivileges

SQLColumns

SQLDriverConnect

SQLEndTran

SQLExecDirect

SQLExecute

SQLExtendedFetch

SQLFetch

SQLFetchScroll

SQLForeignKeys

SQLGetConnectAttr

SQLGetData

SQLGetEnvAttr

SQLGetInfo

SQLGetStmtAttr

SQLGetTypeInfo

SQLParamData

SQLPrepare

SQLPrimaryKeys

SQLProcedureColumns

SQLProcedures

SQLSetConnectAttr

SQLSetEnvAttr

SQLSetPos

SQLSetStmtAttr

SQLSpecialColumns

SQLStatistics

SQLTablePrivileges

SQLTables
HYT00 超时时间已到 SQLBrowseConnect

SQLBulkOperations

SQLColumnPrivileges

SQLColumns

SQLConnect

SQLDriverConnect

SQLExecDirect

SQLExecute

SQLExtendedFetch

SQLForeignKeys

SQLGetTypeInfo

SQLParamData

SQLPrepare

SQLPrimaryKeys

SQLProcedureColumns

SQLProcedures

SQLSetPos

SQLSpecialColumns

SQLStatistics

SQLTablePrivileges

SQLTables
HYT01 超过连接超时时间 除以下各项外的所有 ODBC 函数:

SQLDrivers

SQLDataSources

SQLGetEnvAttr

SQLSetEnvAttr
IM001 驱动程序不支持此函数 除以下各项外的所有 ODBC 函数:

SQLAllocHandle

SQLDataSources

SQLDrivers

SQLFreeHandle

SQLGetFunctions
IM002 找不到数据源名称且未指定默认驱动程序 SQLBrowseConnect

SQLConnect

SQLDriverConnect
IM003 无法加载指定的驱动程序 SQLBrowseConnect

SQLConnect

SQLDriverConnect
IM004 SQL_HANDLE_ENV 上的驱动程序的 SQLAllocHandle 失败 SQLBrowseConnect

SQLConnect

SQLDriverConnect
IM005 SQL_HANDLE_DBC 上的驱动程序的 SQLAllocHandle 失败 SQLBrowseConnect

SQLConnect

SQLDriverConnect
IM006 驱动程序的 SQLSetConnectAttr 失败 SQLBrowseConnect

SQLConnect

SQLDriverConnect
IM007 未指定数据源或驱动程序;禁止对话 SQLDriverConnect
IM008 对话框失败 SQLDriverConnect
IM009 无法加载转换 DLL SQLBrowseConnect

SQLConnect

SQLDriverConnect

SQLSetConnectAttr
IM010 数据源名称太长 SQLBrowseConnect

SQLConnect

SQLDriverConnect
IM011 驱动程序名称太长 SQLBrowseConnect

SQLDriverConnect
IM012 DRIVER 关键字语法错误 SQLBrowseConnect

SQLDriverConnect
IM013 跟踪文件错误 所有 ODBC 函数。
IM014 文件 DSN 的名称无效 SQLDriverConnect
IM015 损坏的文件数据源 SQLDriverConnect