Есть таблица CDR_TEL_YYYYMM
CREATE TABLE CDR_TEL_YYYYMM ("ID_TRANS" NUMBER(10), "N_DURATION" NUMBER(10), "B_PROCESSED" NUMBER(1) DEFAULT 0 ) TABLESPACE MIRAVILD_DATA; COMMENT ON TABLE CDR_TEL_YYYYMM IS 'Проводка'; COMMENT ON COLUMN CDR_TEL_YYYYMM.ID_TRANS IS 'Код проводки'; COMMENT ON COLUMN CDR_TEL_YYYYMM.N_DURATION IS 'Продолжительность проводки'; COMMENT ON COLUMN CDR_TEL_YYYYMM.B_PROCESSED IS 'Признак обработки (0 - не обработан)'; /
Напишите курсор CUR, который для выборки строк из CDR_TEL_YYYYMM по условиям N_DURATION не равно 0 и B_PROCESSED равно 1, будет производить изменение поля ID_TRANS в null для каждой строки.
DECLARE CURSOR cur IS SELECT c.id_trans FROM cdr_tel_yyyymm c WHERE c.n_duration <> 0 AND c.b_processed = 1 FOR UPDATE NOWAIT; BEGIN FOR i IN cur LOOP UPDATE cdr_tel_yyyymm c SET c.id_trans = NULL WHERE CURRENT OF cur; END LOOP; END; /
P.S.
Конфигурация СУБД — Oracle Database 11g Express Edition Release 11.2.0.2.0
IDE — PL/SQL Developer Version 11.0.6.1776