Я создал базу данных фиктивных данных для обучения, и я целенаправленно создал несколько дублированных записей в одной из таблиц. В каждом случае я хочу отмечать одну из дублированных записей как «Последний», «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)' –