我有一个存储过程,我从外部程序调用来存储数据。设置proc的方式是它插入表中,异常'dup_val_on_index'代替它。
如果我捕获'dup_val_on_index'异常并在其中进行更新,我怎么能得到这个错误?我假设PK会捕获这个特定的异常,因为它会创建一个副本吗?
答案 0 :(得分:2)
为什么不首先使用MERGE?
如果你真的不想使用merge,只需构建一个内部pl / sql-block并在那里捕获异常:
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;
答案 1 :(得分:2)
是的,对于主键约束错误,将引发dup_val_on_index命名错误。
也许您的更新是导致错误引发的代码。