【问题标题】:How to update cursor records using WHERE CURRENT OF?如何使用 WHERE CURRENT OF 更新游标记录?
【发布时间】:2012-10-23 19:54:01
【问题描述】:

执行此块时出现“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 CURRENT OF c_orders;
    EXIT WHEN c_orders%NOTFOUND; 
  END LOOP;  
  CLOSE c_orders; 
END; 

但是,如果使用 FOR IN 语法,一切正常:

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; 

【问题讨论】:

    标签: oracle plsql cursor


    【解决方案1】:

    exit when 移到 update 之前 - 您无法更新不存在的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多