EXCEPTION 子句

Exception 子句
元素 描述 限制 语法
exception_num 异常的数量 135,000 的整数 文字的数值
exception_var 存储 exception_num 的变量 必须为 SMALLINT 或 INT 特定于语言
information 接收指定的异常域的值的主变量 数据类型必须与指定的字段的数据类型向匹配 特定于语言

exception_num 文字表示从 Statement 子句中的 NUMBER 字段返回的异常的数量的异常值之一。

在检索异常信息时,GET DIAGNOSTICS 将七个字段中的每一个的值写到相应的主变量内。这些域定位在诊断区域中,并从最近的 SQL 语句产生的异常派生而来。

主变量数据类型必须与请求的域的数据类型相同。下表描述这七个异常信息域。
域名称关键字 域数据类型 域内容 ESQL/C 主变量数据类型
RETURNED_SQLSTATE 字符 SQLSTATE char[6]
GBASEDBT_SQLCODE 整数 特定于 GBase 8s 的状态代码 int4
CLASS_ORIGIN 字符 字符串 char[255]
SUBCLASS_ORIGIN 字符 字符串 char[255]
MESSAGE_TEXT 字符 字符串 char[255]
MESSAGE_LENGTH 整数 数值 int
SERVER_NAME 字符 字符串 char[255]
CONNECTION_NAME 字符 字符串 char[255]

应用通过编号指定异常,或使用无符号的整数,或使用整数主变量(小数位为 0 的精确数值)。值为 1 的异常对应于由最近的 SQL 语句而不是 GET DIAGNOSTICS 设置的 SQLSTATE 值。其他异常编号与由 SQL 语句产生的其他异常之间的关联未定义。这样,不存在设置顺序,异常值依次顺序填充到诊断区域。您通常会得到至少一个异常,即使 SQLSTATE 值表示成功。

如果在 GET DIAGNOSTICS 语句内发生错误(即,如果请求了无效的异常编号),则将 GBase 8s 内部的 SQLCODESQLSTATE 变量设置为那个异常的值。此外,未定义 GET DIAGNOSTICS 字段。