我爲學習目的創建了一個虛擬數據庫,並且有意地在其中一個表中創建了一些重複的記錄。在每種情況下,我想標記一個重複記錄爲Latest ='Y',另一個記錄爲'N',並且對於每個記錄,最新的標誌將是'Y'。如何使用計算值更新PL/SQL的列
我試圖用PLSQL要經過我所有的記錄,但是當我嘗試使用先前計算的值(這將告訴它是一個複製的記錄),它說:
ORA-06550:行20,列17: PLS-00201:標識符「計數器」必須聲明
這是我嘗試使用的語句:
DECLARE CURSOR cur IS SELECT order_id, order_date, person_id, amount, successfull_order, country_id, latest, ROWCOUNT AS COUNTER FROM (SELECT order_id, order_date, person_id, amount, successfull_order, country_id, latest, ROW_NUMBER() OVER (PARTITION BY order_id, order_date, person_id, amount, successfull_order, country_id ORDER BY order_id, order_date, person_id, amount, successfull_order, country_id) ROWCOUNT FROM orders) orders FOR UPDATE OF orders.latest; rec cur%ROWTYPE; BEGIN FOR rec IN cur LOOP IF MOD (COUNTER, 2) = 0 THEN UPDATE orders SET latest = 'N' WHERE CURRENT OF cur; ELSE UPDATE orders SET latest = 'Y' WHERE CURRENT OF cur; END IF; END LOOP; END;
我是新來PLSQL所以我試圖修改我在這裏找到的聲明: http://www.adp-gmbh.ch/ora/plsql/cursors/for_update.html
我應該在聲明中更改哪些內容?還是應該使用其他方法?
感謝您的提前解答! Botond
您應該從像'MOD光標參照訪問它(rec.COUNTER,2)' –