我創建了一個只允許用戶有10個當前下訂單的觸發器。所以現在當客戶試圖放置第11號訂單時,oracle數據庫會拋出一個錯誤。那麼3錯誤。PL/SQL Oracle錯誤處理
ORA-20000:您目前有10個或更多的訂單處理。
ORA-06512:在 「C3283535.TRG_ORDER_LIMIT」,第12行
ORA-04088:觸發的執行期間錯誤 'C3283535.TRG_ORDER_LIMIT'
頂端錯誤是一個我已經創建使用:
raise_application_error(-20000,'您目前有10個或更多訂單 處理'。
我只是想知道搜索後,並嘗試了很多方法如何更改其他兩個錯誤的錯誤信息,甚至不顯示它們都一起給用戶?
這裏是我使用的代碼
create or replace trigger trg_order_limit
before insert on placed_order for each row
declare
v_count number;
begin
-- Get current order count
select count(order_id)
into v_count
from placed_order
where fk1_customer_id = :new.fk1_customer_id;
-- Raise exception if there are too many
if v_count >= 10 then
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20000, 'You currently have 10 or more orders processing.');
end if;
end;
非常感謝 理查德
不喜歡觸發器的另一個原因。你可以用你的insert語句包裝一個程序包/程序調用,將其捕獲並返回一個錯誤信息給領子?您不會說明該語句執行的編程環境。你可以過濾調用應用程序中的錯誤嗎? – OldProgrammer 2013-03-21 13:05:15
我確信這個問題在其他地方得到了解答...我找不到它:-(。 – Ben 2013-03-21 13:07:12
[嘆氣...](http://stackoverflow.com/a/15546744/876937):As我說過,異常需要被你的應用程序所捕獲,例如,如果你使用OCI編寫PHP,你可以使用'oci_error'函數,看看'ORA-20000'錯誤[I]是否指定 – Xophmeister 2013-03-21 13:07:19