如何使用WHERE CURRENT OF更新游标记录? [英] How to update cursor records using WHERE CURRENT OF?
本文介绍了如何使用WHERE CURRENT OF更新游标记录?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
执行此块时,我收到ORA-01410:ROWID无效异常。任何想法为什么?
DECLARE
CURSOR c_orders IS
SELECT * from orders FOR UPDATE OF no;
v_order_record c_orders%ROWTYPE;
BEGIN
OPEN c_orders;
LOOP
FETCH c_orders INTO v_order_record;
UPDATE orders SET no = 11 where c_order;
退出当c_orders%NOTFOUND;
END LOOP;
CLOSE c_orders;
END;但是,如果使用FOR IN语法,一切都会奏效:
$ b b DECLARE
CURSOR c_orders IS
SELECT * from orders FOR UPDATE OF no;
BEGIN
FOR rec IN c_orders
LOOP
UPDATE命令SET no = 11当前的c_orders;
END LOOP;
END;
解决方案 / code>到更新
之前 - 您不能更新不存在的内容。
I'm getting "ORA-01410: Invalid ROWID" exception when executing this block. Any ideas why?
DECLARE
CURSOR c_orders IS
SELECT * from orders FOR UPDATE OF no;
v_order_record c_orders%ROWTYPE;
BEGIN
OPEN c_orders;
LOOP
FETCH c_orders INTO v_order_record;
UPDATE orders SET no = 11 WHERE CURRENT OF c_orders;
EXIT WHEN c_orders%NOTFOUND;
END LOOP;
CLOSE c_orders;
END;
However, everything works if using FOR IN syntax:
DECLARE
CURSOR c_orders IS
SELECT * from orders FOR UPDATE OF no;
BEGIN
FOR rec IN c_orders
LOOP
UPDATE orders SET no = 11 WHERE CURRENT OF c_orders;
END LOOP;
END;
解决方案 Move the exit when
to before the update
- you can't update something that doesn't exist.
这篇关于如何使用WHERE CURRENT OF更新游标记录?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文