Курсор по таблице

Есть таблица 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

Tags: , , ,

Leave a Reply

You must be logged in to post a comment.