Я хочу скопировать данные предыдущей строки, изменить несколько столбцов и вставить в ту же таблицу, но не хочу использовать, вставить в 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;