功能描述
返回诊断记录的多个字段的当前值,其中诊断记录包含错误、警告及状态信息。
原型
SQLRETURN SQLGetDiagRec(SQLSMALLINT HandleType,
SQLHANDLE Handle,
SQLSMALLINT RecNumber,
SQLCHAR
*SQLState,
SQLINTEGER
*NativeErrorPtr,
SQLCHAR
*MessageText,
SQLSMALLINT
BufferLength,
SQLSMALLINT *TextLengthPtr);
参数
GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
265
表8-28 SQLGetDiagRec 参数
关键字
参数说明
HandleType
句柄类型标识符,它说明诊断所要求的句柄类型。必须为下列
值之一:
SQL_HANDLE_ENV
SQL_HANDLE_DBC
SQL_HANDLE_STMT
SQL_HANDLE_DESC
Handle
诊断数据结构的句柄,其类型由HandleType 来指出。如果
HandleType 是SQL_HANDLE_ENV,Handle 可以是共享的或
非共享的环境句柄。
RecNumber
指出应用从查找信息的状态记录。状态记录从1 开始编号。
NativeErrorPt r
输出参数:
指向缓冲区的指针,
该缓冲区存储着本地的错误码。
MessageText
指向缓冲区的指针,该缓冲区存储着诊断信息文本串。
BufferLength
MessageText 的长度。
TextLengthPt r
输出参数:指向缓冲区的指针,返回MessageText 中的字节总
数。如果返回字节数大于BufferLength,则MessageText 中的
诊断信息文本被截断成BufferLength 减去NULL 结尾字符的长
度。
返回值
SQL_SUCCESS:表示调用正确。
SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。
SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。
SQL_INVALID_HANDLE:表示调用无效句柄。其他API 的返回值同理。
注意事项
SQLGetDiagRec 不返回诊断记录,而是通过以上返回值,来报告执行结果。
当调用ODBC 函数返回值为SQL_ERROR 或SQL_SUCCESS_WITH_INFO 时,可以通
过调用SQLGetDiagRec 返回的诊断信息值SQLSTATE,查看失败或警告原因。SQLSTATE
GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
266
值如下表所示。
表8-29 SQLSTATE 值
SQLSATATE
错误
描述
HY000
一般错误
未定义特定的SQLSTATE 所产生的一个错误。
HY001
内存分配错误
驱动程序不能分配所需要的内存来支持函数的
执行或完成。
HY008
取消操作
调用SQLCancel 取消执行语句后,依然在
StatementHandle 上调用函数。
HY010
函数系列错误
在为执行中的所有数据参数或列发送数据前就
调用了执行函数。
HY013
内存管理错误
不能处理函数调用,可能由当前内存条件差引
起。
HYT01
连接超时
数据源响应请求之前,连接超时。
IM001
驱动程序不支持此函
数
调用了StatementHandle 相关的驱动程序不支持
的函数
示例
参见8.2.23 示例。