SQLERRD 数组

在 SQLCODE 中可报告的某些错误代码反映一般的问题。数据库服务器可在 SQLERRD 的第二个字段中设置更详细的代码,显示数据库服务器 I/O 例程或操作系统遇到的错误。

将 SQLERRD 数组中的整数设置为跟在不同语句之后的不同值。在 GBase 8s ESQL/C 中,仅使用数组的第一个和第四个元素。下表展示如何使用这些字段。
表 1. SQLERRD 的字段
字段 解释
第一个 对于 SELECT、UPDATE、INSERT 或 DELETE 语句,在成功的 PREPARE 语句之后,或在打开 Select 游标之后,此字段包含估计的受影响的行数。
第二个 当 SQLCODE 包含一个错误代码时,此字段包含零或附加的错误代码,称为 ISAM 错误代码,说明主要错误的原因。在对单个行的成功的插入操作之后,此字段包含任何 SERIAL、BIGSERIAL 或 SERIAL8 值为那行生成的值。(然而,当通过表上的触发器,或通过视图上的 INSTEAD OF 触发器,将一序列列作为触发器的活动直接插入时,不更新此字段。)
第三个 在成功的多行插入、更新或删除操作之后,此字段包含处理了的行数。在以错误结束的多行插入、更新或删除操作之后,此字段包含在检测到该错误之前成功地处理了的行数。
第四个 在对于 SELECT、UPDATE、INSERT 或 DELETE 语句的成功的 PREPARE 语句之后,或在已打开了选择游标之后,此字段包含磁盘访问的与处理的全部行的估计加权总和。
第五个 在 PREPARE、EXECUTE IMMEDIATE、DECLARE 或静态的 SQL 语句中的语法错误之后,此字段包含检测到该错误的位置的语句文本的偏移量。
第六个 在对选择了的行的成功的访存之后,或成功的插入、更新或删除操作之后,此字段包含处理了的最后一行的 rowid(物理地址)。此 rowid 值是否对应于数据库服务器返回给用户的行,依赖于数据库服务器处理查询的方式,特别是对于 SELECT 语句。
第七个 保留。

这些附加的详细信息可是有用的。例如,您可使用第三个字段中的值来报告删除了或更新了多少行。当您的程序准备一个用户输入的 SQL 语句并发现错误时,第五个字段中的值使得您能够向用户显示错误的精确点。(当您在错误之后请求修改语句时,DB-Access 使用此特性来定位游标。)