关于informix的rowid问题,请大侠解决,谢谢!

yang0411 2003-01-23 12:42:22
RS/6000 AIX 环境下 Esql:
请教各位大侠:

程序的流程是这样的,
EXEC SQL DECLARE rs10_cur CURSOR FOR
SELECT rowid,*
FROM rspf10
WHERE ... FOR UPDATE;

EXEC SQL OPEN rs10_cur;

for(;;) {
EXEC SQL FETCH rs10_cur INTO :VSrowid,:Rspf10;
if (SQLCODE == SQLNOTFOUND) break;
if (SQLCODE != 0) return 300;

strcpy(Rspf10.rs10acno,PP1030);

EXEC SQL UPDATE rspf10 SET *=(:Rspf10)
WHERE rowid = :VSrowid;
}

表中只有一条记录,当修改成功后,循环并未退出,而是将修改后的记录又
读了出来,循环了两次。
...全文
318 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
powerman_lyj 2003-02-10
  • 打赏
  • 举报
回复
建议先读出具体行数进行for循环,这涉及到informix固有性质造成的。
dgmzf 2003-02-10
  • 打赏
  • 举报
回复
建议不用rowid,在定义游标的时候已经使用了FOR UPDATE语句,则后面更新的时候可以用EXEC SQL UPDATE rspf10 SET *=(:Rspf10) where CURRENT OF rs10_cur 。
prghome 2003-02-01
  • 打赏
  • 举报
回复
不用游标,直接用update不好吗?
update rspf10 set rs10acno = :Rspf10;
wooe 2003-01-31
  • 打赏
  • 举报
回复
建议设一个flag来标注记录成功更新的情况,用一个技术起来纪录循环次数,show出来以便解决问题。

rowid可以视为每一纪录的unique查询条件,但单位里资深informixer讲,在多个磁盘阵列的server上,会有问题。。。

在库表的批量update操作中,如达到目的最好加强制exit.

cooth 2003-01-30
  • 打赏
  • 举报
回复
不要用for,用while就没问题了!
源码直接下载地址: https://pan.quark.cn/s/a4b39357ea24 ### 信号与系统(郑君里 第三版)课后习题解析 #### 1. 信号与系统中δ函数的尺度变换特性 在《信号与系统》(郑君里 第三版)这一著作中,作者阐述了δ函数的尺度变换特性,并借助一个特定的习题进行了详尽的阐释。该习题的任务在于验证以下等式: \[ \delta(at) = \frac{1}{|a|}\delta(t) \] **论证:** 为了验证此等式,我们首先需要掌握δ函数的基本属性以及它如何响应自变量的变动。依据题目的指示,我们知道当自变量为\( t \)时,脉冲的底部长度为\( \tau \),而当自变量转变为\( at \)时,底部长度调整为\( |a|\tau \)。 我们能够借助图形化的手段来获得直观的认识。设想一个用三角形来逼近的δ函数图像,其底边长度为\( \tau \),高度为\( h \),那么三角形的面积计算为\( A = \frac{1}{2} \tau h \)。当自变量变为\( at \)时,为了维持三角形的高度恒定,底边长度必须更新为\( |a|\tau \),此时三角形的面积变为\( A = \frac{1}{2} |a|\tau h = |a|A \)。 由于δ函数的积分特性被定义为单位面积,即在任何区间\( [-\infty, +\infty] \)内的积分结果均为1,因此无论底部长度如何变化,积分值均保持恒定。这表明,当自变量转变为\( at \)时,为了确保积分值维持在1,δ函数的幅度必须相应地调整为原值的\( \frac{1}{|a|} \)倍。由此,我们得以证明该等式: \[ \int_{-\infty}^{+\infty}...

1,195

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 Informix
社区管理员
  • Informix社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧