Мне нужно обновить код, который использует динамический sql и потенциально может иметь повторяющиеся имена столбцов в столбцах оператора вставки.
Итак, я хотел справиться с этим, ORA-00957: Дублировать имя столбца. Эта ошибка не обрабатывается самым общим «когда другие» в блоке исключений. Если я заставлю его проверить уникальное нарушение ограничения, это произойдет.
После некоторого кода теста:
create table animal (id number , animal_type number,
animal_name varchar2(20), constraint id primary key(id));
-----------------------------------------------------
begin
for i in 1.. 100 loop
insert into animal(id, animal_type, animal_name)
values(i,floor(dbms_random.value(1,30)),'animal'||i);
end loop;
end;
-----------------------------------------------------
DECLARE
-- e_duplicate_column exception;
-- pragma exception_init(e_duplicate_column,-957);
BEGIN
insert into animal(id, animal_name, animal_name)
values(1000003, 'animal 1000003', 'animal 1000003');
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(SQLCODE);
dbms_output.put_line(SQLERRM);
END;
Я пытался получить здесь коды, так как прагма тоже не работала (т.е. прибыла). Но этого не произойдет, если даже не добраться до «когда другие».
Любые идеи приветствуются.
Ура, Роберт
PS oracle 12C, пробовал на sqldeveloper и toad