GBASE南大通用分享,适用于 GBase 8s ESQL/C的Insert 游标

关闭 Insert 游标 

由于 GBase 8s 在 SPL 例程中不支持 Insert 游标,本节有关 Insert 游标的讨论仅适用于 GBase 8s ESQL/C。在 SPL 例程中,只能执行 DECLARE 语句定义的 Select 或 Function 游标的 CLOSE 语句。(SPL 的 FOREACH 语句在其语句块中包含 INSERT 语句可以声明功能类似 Insert 游标的 direct cursor ,但是不能执行 FOREACH 声明的直接定位游标的 CLOSE 语句。 GBase 8s 在程序控制从定义直接定位游标的 FOREACH 循环退出时,会自动关闭该直接定位游 标。) 

  在 GBase 8s ESQL/C 中,CLOSE 语句对待与 INSERT 语句关联的游标和与 SELECT 、 EXECUTE FUNCTION 或 EXECUTE PROCEDURE 语句关联的游标不同。当游标标识与 INSERT 语句关联时,CLOSE 语句将任何剩下的已缓冲行写入数据库。在 sqlca 结构中 sqlerrd 数组的第 三个元素 sqlca.sqlerrd[2] 中返回成功插入数据库的行数。有关如何使用 SQLERRD 对插入的总 行数计数的信息,请参阅 错误检查 。

sqlca 结构的 SQLCODE 字段,指示了 Insert 游标 CLOSE 语句的结果。如果所有已缓冲的行成 功插入,则 SQLCODE 被置零。如果遇到错误,则 SQLCODE 字段被设为负的错误消息数。

当 SQLCODE 为零时,释放行缓冲区空间,且关闭游标;也就是,您无法执行指定游标的 PUT 或 FLUSH 语句,直到您重新打开它。 

提示: 如果遇到 sqlca.SQLCODE 错误,则还会存在对应的 SQLSTATE 错误值。关于如果获得消息 文本的信息,请检查 GET DIAGNOSTICS 语句。 

 如果插入不成功,则成功插入的行数存储在 sqlerrd 中。在最后成功插入的行之后的任何已缓冲行 被废弃。由于插入失败,CLOSE 语句也失败,并且游标没有关闭。例如,如果磁盘空间不足而使 得某些行无法插入,则 CLOSE 语句会失败。在这种情况中,第二个 CLOSE 语句可能成功,因为 不存在已缓冲的行。OPEN 语句也会成功,因为 OPEN 语句执行了一个隐式关闭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值