我有一個PL/SQL存儲過程,我想在其中運行幾個更新,然後捕獲任何異常並將它們返回out參數。爲了簡單起見,在下面的代碼塊中,我只是將異常代碼和錯誤消息輸出到控制檯。但是,代碼塊以下不工作(我遇到一個「發現/預期」語法錯誤)如何捕捉並返回(或打印)ORACLE PL/SQL中的異常創建或替換存儲過程
CREATE OR REPLACE PROCEDURE DBP.TESTING_SP AS
DECLARE
v_code NUMBER;
v_errm VARCHAR2(64);
BEGIN
UPDATE PS_NE_PHONE_TBL SET NE_PHONE_TYPE = 'TEST' WHERE NEMPLID_TBL = 'N14924';
EXCEPTION
WHEN OTHERS THEN
v_code := SQLCODE;
v_errm := SUBSTR(SQLERRM, 1, 64);
DBMS_OUTPUT.PUT_LINE (v_code || ' ' || v_errm);
END TESTING_SP;
/
究竟是爲了什麼,我試圖做正確的語法?
我讀了一個論壇
「當使用創建或替換語法,你不能使用申報。聲明僅適用於未命名的匿名塊。所以,要麼刪除第1行,並創建一個匿名阻止或刪除第2行並創建一個指定的過程。「
但我不知道如何創建一個匿名塊或創建一個命名的過程來完成我想要做的事情(如果這的確是'解決方案')。有人可以幫忙嗎?
除非你正在做一些有用的異常信息,否則沒有必要去捕捉它。將異常信息傳遞給調用函數的最佳方式是不做任何事情,並讓異常自然地提升。這會使用較少的代碼並保留錯誤的實際行號。 –