首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无效rowid错误

无效rowid错误
EN

Database Administration用户
提问于 2013-03-26 18:31:30
回答 1查看 724关注 0票数 0

我想看看更新锁是如何在dml (删除/更新)操作时帮助最小化错误的。

代码语言:javascript
复制
declare
 cursor update_lock is select empno from emp where deptno=&no for update of sal;
 num number;
begin
 --for i in update_lock loop
 --end loop;
 open update_lock;
 loop
   fetch update_lock into num;
   exit when update_lock%notfound;
   dbms_output.put_line(num);
 end loop;
 update emp set sal=sal+10 where current of update_lock;
 close update_lock;
end;

我用非常简单的代码来检查,它是如何工作的。但是,它显示了无效的ROWID。有谁可以帮我?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2013-03-26 20:01:34

您的循环正在遍历emp for deptno=&no中的所有行,而不更新它们。当您到达结果集的末尾(最后一行一次)时,exit when udpate_lock%notfound会触发并跳出循环,跳到update语句。

此时,游标无效。你已经超越了最后一排。因此,update [...] where current of将失败-- update_lock没有current of,游标不在一行上。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/37617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档