SQL 通信区域(sqlca)结构包含关于每一 FLUSH 语句的成功信息以及成功地插入的行数。每一 FLUSH 语句的结果在 sqlca 的这些字段描述:sqlca.sqlcode、SQLCODE 和 sqlca.sqlerrd[2]。
在您以插入游标使用数据缓冲时,直到刷新该缓冲区才会发现错误。例如,仅在刷新缓冲区时,才能发现与列的预定数据类型不兼容的输入值。在发现错误时,缓冲区中位于错误之后的任何行都不会插入;它们从内存中丢失。
如果未发生错误,则
SQLCODE 域或设置为错误代码或设置为零(0)。
SQLERRD 数组的第三个元素设置为成功地插入到数据库内的行数:
- 如果一个行块成功地插入到数据库内,则 SQLCODE 设置为零(0),SQLERRD 设置为行数。
- 如果在 FLUSH 语句插入一个行块时发生错误,则 SQLCODE 显示是哪个错误,SQLERRD 包含成功地插入的行数。(从缓冲区废弃未插入的行。)
提示: 在您遇到
SQLCODE 错误时,还存在相应的
SQLSTATE 错误。
GBase 8s
的客户机/服务器通信协议,诸如 SQLI 和 DRDA
®,支持
SQLSTATE 代码值。要获取这些代码的列表,以及关于如何取得消息文本的信息,请参阅
使用 SQLSTATE 错误状态代码。
要对实际插入到数据库内的行数以及尚未插入的行数计数
- 准备两个整数变量,例如,total 和 pending。
- 在游标打开时,设置两个变量为 0。
- 每次执行 PUT 语句时,增大 total 和 pending。
- 只要执行 FLUSH 语句时,或关闭游标时,从 pending 抽取 SQLERRD 数组的第三个字段。