使用 GET DIAGNOSTICS 语句来返回关于最近执行的 SQL 语句的诊断信息
用法
请随同 GBase 8s ESQL/C 使用此语句。
GET DIAGNOSTICS 语句检索数据库服务器记录在名为诊断区域中的指定的状态信息。使用 GET
DIAGNOSTICS 不会更改诊断区域的内容。
GET DIAGNOSTICS 语句使用下列两个子句中的一个:
• Statement 子句返回关于最近的 SQL 语句生成的错误和警告的计数和溢出信息。
• EXCEPTION 子句提供关于最近的 SQL 语句生成的错误和警告的特定信息。
使用 SQLSTATE 错误状态代码
在执行 SQL 语句时,自动地生成错误状态代码。此代码表示 success、failure、warning 或
no data found。该错误状态代码存储在名为 SQLSTATE 的内建变量中。
类和子类代码
SQLSTATE 状态代码是一个仅可包含数字和大写字母的五字符的字符串。
SQLSTATE 状态代码的前两个字符表示类。SQLSTATE 代码的后三个字符表示子类。
SQLSTATE 代码的结构。此示例使用值 08001,此处 08 是类代码,001 是子类代码。值 08001 表
示 unable to connect with database environment 错误。
下列表时解释类代码值的快速参考。
SQLSTATE 类代码值 结果
00 成功
01 成功但有警告
02 找不到数据
02 错误或警告
SQLSTATE 支持 SQL 的 ANSI/ISO 标准
返回到 SQLSTATE 变量的所有状态代码都符合 ANSI,除了以下几种情况:
带有 01 类代码和以 I 开头的子类代码的 SQLSTATE 代码是特定于 GBase 8s 的警告
消息。
带有 IX 类代码和任何子类代码的 SQLSTATE 代码是特定于 GBase 8s 的错误消息。
带有以从 5 到 9 中的一个数字或从 I 到 Z 中的一个大写字母开头的 SQLSTATE 代
码,表示 SQL 的 ANSI/ISO 标准当前未定义的条件。唯一的例外是类代码为 IX 的
SQLSTATE 代码,这些代码是特定于 GBase 8s 的错误消息。
GBase 8s 的客户端/服务器通信协议,诸如 SQLI 和 DRDA®,支持这些 SQLSTATE 代码值。