2013-12-03 2 views
-1

У меня есть сохраненный proc, который я вызываю из внешней программы для восстановления данных. Способ установки proc заключается в том, что он вставляется в таблицу, а в исключении «dup_val_on_index» вместо него выполняется обновление.Уникальное ограничение Oracle на ПК нарушено

Как я могу получить эту ошибку, если я поймаю исключение 'dup_val_on_index' и сделаю обновление внутри него? Я предполагаю, что ПК поймает это конкретное исключение, так как оно создает дубликат?

+0

'У меня есть хранимая процедура', где это? –

+0

Мне не нравится показ производственного кода на сайте. Я предполагаю, что мой первый вопрос заключается в том, будет ли исключение PK уникальным путем исключения dup_val_on_index? – user441521

+0

У вас есть дополнительная информация, которую вы можете поделиться? здесь нет ничего, что помогло бы людям решить вашу проблему, поскольку все, что мы знаем, это ошибка, и что-то на месте, которое должно ее поймать. –

ответ

2

Да, dup_val_on_index имени ошибка будет поднят для первичного ошибка ограничения ключа.

Возможно, ваше обновление - это код, вызывающий возникновение ошибки.

2

Почему бы вам просто не использовать MERGE в первую очередь?

В случае, если вы действительно не хотите использовать слияние, просто построить внутренний PL/SQL-блок и поймать исключение там:

create or replace procedure proc(param1 varchar2) 
as 
some_var varchar2(50); 
begin 
    -- do some things 
    begin 
    insert on your table; 
    exception when dup_val_on_index then 
     update on your table; 
    end; 
    --proceed with some more things 
end proc; 
Смежные вопросы