Извлечь выделенные данные в курсор, изменить их и затем вставить данные курсора типа строки в ту же таблицу - PullRequest
0 голосов
/ 29 октября 2018

Я хочу скопировать данные предыдущей строки, изменить несколько столбцов и вставить в ту же таблицу, но не хочу использовать, вставить в select, поскольку список столбцов огромен. ниже мой блок:

    DECLARE
    CURSOR CUR_ACC_SCH IS
      SELECT *
      FROM TB_ACCOUNT_SCH
     WHERE COMP_NAME in ('INT', 'PRINCIPAL')
       and ACCOUNT_NUMBER = '0001111111111'
       and SCHEDULE_DUE_DATE = '10-DEC-2010';

  ROW_ACC_SCH CUR_ACC_SCH%ROWTYPE;

    BEGIN

  OPEN CUR_ACC_SCH;
  FETCH CUR_ACC_SCH
    INTO ROW_ACC_SCH;
  CLOSE CUR_ACC_SCH;

     ROW_ACC_SCH.SCHEDULE_ST_DATE     := '10-DEC-2010';
     ROW_ACC_SCH.SCHEDULE_DUE_DATE    := '30-DEC-2010';
     ROW_ACC_SCH.AMOUNT_DUE           := 0;
     ROW_ACC_SCH.AMOUNT_SETTLED       := 0;
     ROW_ACC_SCH.ACCRUED_AMOUNT       := null;
     ROW_ACC_SCH.SCHEDULE_LINKAGE     := '30-DEC-2010';
     ROW_ACC_SCH.LAST_PMNT_VALUE_DATE := null;
     ROW_ACC_SCH.SCHEDULE_NO          := 26;

     INSERT INTO TB_ACCOUNT_SCH VALUES ROW_ACC_SCH;
     --commit;
     END;
/

Проблема заключается в том, что у меня есть уникальный индекс ключа для столбца ACCOUNT_NUMBER, BRANCH_CODE, COMP_NAME, SCHEDULE_DUE_DATE, SCHEDULE_ST_DATE. Курсор выбирает 2 строки. Хотите скопировать и изменить, а затем вставить эти 2 строки. Система должна скопировать данные строки курсора и изменить их с помощью инициализирующих символов для имени_компьютера, а затем вставить, чтобы избежать нарушения уникального ключа. В приведенном выше блоке столбцы, которые я инициализировал, хотят обновить одинаково для обеих строк.

и новая строка, которую я хочу вставить, имеет только уникальное имя в comp_name. с указанным выше блоком вставляются только данные из 1 строки, а не для другого имени_компьютера. Я не хочу инициализировать всю запись, поскольку цель добавления в выборку снова появляется на рисунке. Я хочу вставить с одним именем коллекции, как показано ниже INSERT INTO TB_ACCOUNT_SCH VALUES ROW_ACC_SCH;

...