2013-12-18 23 views
0

我們使用中間件技術來構建Web應用程序。在進行安全審計期間,發生了一個問題,即應用程序在發生oracle錯誤(如約束驗證錯誤或唯一密鑰約束錯誤)的情況下公開由Oracle生成的ORA代碼。使用自定義函數處理所有Oracle ORA錯誤

我們不能更改中間代碼來隱藏代碼級別的錯誤,所以想知道我們是否可以在Oracle中編寫一個通用處理函數,它可以充當攔截器,我可以嘗試去掉ORA代碼錯誤,並提出另一個。

+1

這取決於您使用的Web應用程序的技術。它需要進行編碼,以便在調用數據庫時處理ORA錯誤。 –

回答

0

在PL/SQL中,可以捕捉異常,並提高其他的(這適用於所有的PL/SQL代碼,存儲過程,函數,包,觸發器等)

BEGIN 
    INSERT INTO foobar(foo, bar) VALUES ('FOO', 'BAR'); 
EXECPTION 
    WHEN OTHERS THEN 
    raise_application_error(-20000, 'Could not handle your request.'); 
END; 

但這顯然需要PL/SQL代碼圍繞可能導致異常的語句。 AFAIK無法全局攔截來自單個SQL語句的所有異常。