說我有一個插入一條記錄表一個Oracle PL/SQL塊,需要從一個獨特的約束錯誤恢復,就像這樣:如何捕獲PL/SQL塊中的唯一約束錯誤?
begin
insert into some_table ('some', 'values');
exception
when ...
update some_table set value = 'values' where key = 'some';
end;
是否有可能更換的東西省略號以捕獲一個唯一的約束錯誤?
以這種方式使用異常有點慢,因爲引發異常需要相當長的時間。嘗試合併。 – tuinstoel 2009-01-13 20:33:44
同意。但請記住,這個例子只是許多可能的用例之一。問題的確是「唯一約束錯誤的標識是什麼?」。這就是爲什麼我投票威廉的答案,但接受裏卡多的。 – 2009-01-14 11:34:19
PL/SQL代碼中的異常並不像託管或高級語言(C#,Java)那樣昂貴。在數據庫應用程序中,真正的「緩慢」是由數據庫訪問引起的,在這種情況下,PL/SQL異常成本是微不足道的。 – 2009-01-16 16:25:49