2012-11-03 20 views
1

執行此塊時,出現「ORA-01410:無效的ROWID」異常。任何想法爲什麼?如何使用WHERE CURRENT OF更新遊標記錄?

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; 

但是,如果您對在語法一切正常:

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; 

回答

4

update之前移動exit when到 - 你無法更新的東西不存在。

+0

你說得對。謝謝! :) – Centurion