我为学习目的创建了一个虚拟数据库,并且有意地在其中一个表中创建了一些重复的记录。在每种情况下,我想标记一个重复记录为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)' –