错误检查

sqlca 结构包含每一 PUT 语句的成功信息,以及使您能对插入了的行进行计数的信息。在 sqlca 的下列字段中包含每一 PUT 语句的结果:sqlca.sqlcodeSQLCODEsqlca.sqlerrd[2]

带有 Insert 游标的数据缓冲区意味着直到刷新缓冲区时才发现错误。例如,仅当刷新缓冲区时,才会发现输入值与所想要的列的数据类型不兼容。当发现错误时,插入那些在错误之前未被插入的那些缓冲了的行;它们会从内存丢失。

如果未发生错误,则 SQLCODE 域设置为 0;否则设置为错误代码。sqlerrd 数组的第三个元素设置为成功地插入到了数据库内的行的数目:
提示: 当您遇到 SQLCODE 错误时,还存在 SQLSTATE 错误。请参阅 GET DIAGNOSTICS 语句了解如何获取消息文本的细节。

要对在数据库中挂起和插入的行的数目计数

  1. 准备两个整数变量(例如,totalpending)。
  2. 当打开游标时,将两个变量设置为 0
  3. 每次执行 PUT 语句,增大 totalpending
  4. 无论何时执行 PUT 或 FLUSH 语句,或关闭游标,从 pending 减去 SQLERRD 数组的第三个字段。

在任何时候,(total - pending)都表示实际插入的行数。 如果没有语句失败,则在关闭游标之后 pending 包含零。 如果在 PUT、FLUSH 或 CLOSE 期间发生错误,则保留在 pending 中的值为未插入的(被废弃的)行的数目。

相关的语句

相关的语句:ALLOCATE DESCRIPTOR 语句CLOSE 子句DEALLOCATE DESCRIPTOR 语句FLUSH 语句DECLARE 语句GET DESCRIPTOR 语句OPEN 语句PREPARE 语句SET DESCRIPTOR 语句

要获得关于 PUT 语句的面向任务的讨论,请参阅 GBase 8s SQL 教程指南

要获得更多关于错误检查、系统描述符区域和 sqlda 结构的信息,请参阅 GBase 8s ESQL/C 程序员手册