Обработка исключения при Inserte

Рейтинг: 0Ответов: 1Опубликовано: 31.10.2014

Добрый день!

Подскажите, пожалуйста, как сделать следущую задачу?

Я пытаюсь занести в таблицу записи таким способом:

for rec in (select *
from table 
where ...)
loop
insert into table values rec;
end loop;

Как мне сделать, чтобы если попадались повторяющиеся записи, они попадали в exception, а вставка шла дальше по циклу?

Ответы

▲ 2Принят

Делать проверку на наличии такой строки перед вставкой? Да и зачем вообще excpetion? Просто пропускайте строку, и все, если такая уже есть в целевой таблице.

Обновление

Как нибудь так:

IF EXISTS (SELECT * FROM table WHERE ...) THEN CONTINUE;

Не знаком с oracle, но, думаю, принцип понятен

А зачем вообще вам цикл? Почему не сделать пакетно?

INSERT INTO
   destination_table
   (...)
SELECT
   ...
FROM
   source_table

Обновление 2

@Sergey4590, а, простите, зачем? Если destination_table == source_table, то там и так все записи есть. т.е. все записи попадут, так сказать, в Ваш exception. Или я не совсем понимаю, чего Вы хотите добиться. Попробуйте переформулировать вопрос.

Обновление 3

@Sergey4590, либо воспользуйтесь вариантом с EXISTS, либо погуглите на тему oracle exception