應用 我在www.quest.com/toad/toad-for-oracle.aspx使用一個程序從任務稱爲TOAD可用。
如上所述,DBMS_OUTPUT非常方便。在你的編輯器中,確保你啓用了輸出窗口。
PL/SQL適用於代碼的「塊」,您可以使用EXCEPTION關鍵字捕獲它。
(請原諒我的格式,不知道如何爲網絡格式)
DECLARE
C_DATE_FORMAT VARCHAR2(20) := 'DD-Mon-YYYY';
C_TIME_FORMAT VARCHAR2(20) := 'HH24:MI:SS';
C_NOT_IMPLEMENTED_CODE CONSTANT NUMBER(5) := -20200;
C_NOT_IMPLEMENTED_MESSAGE CONSTANT VARCHAR2(255) := 'Not implemented';
not_implemented EXCEPTION; -- user defined exception
BEGIN
--RAISE not_implemented; -- raise user defined exception
RAISE_APPLICATION_ERROR(C_NOT_IMPLEMENTED_CODE, C_NOT_IMPLEMENTED_MESSAGE); -- user defined exception
EXCEPTION -- exception block
WHEN not_implemented THEN -- catch not_implemented exception
DBMS_OUTPUT.PUT_LINE('Error: Not implemented');
WHEN OTHERS THEN -- catch all other exceptions
DBMS_OUTPUT.PUT_LINE('Error occured.');
DBMS_OUTPUT.PUT_LINE('Date: ' || TO_CHAR(SYSDATE, C_DATE_FORMAT));
DBMS_OUTPUT.PUT_LINE('Time: ' || TO_CHAR(SYSDATE, C_TIME_FORMAT));
DBMS_OUTPUT.PUT_LINE('Error code: ' || SQLCODE);
DBMS_OUTPUT.PUT_LINE('Error message: ' || SQLERRM); --deal with error
RAISE; -- raise to calling object
END;
提及解釋計劃+1,+1代表「所有代碼正常工作」:) – 2010-09-17 02:54:11
我沒有給出足夠的信息在我原來的。我寫了一個觸發器,可以處理單個插入但不是多個,我認爲是因爲死鎖問題。我認爲我解決了這個問題,但是當它發生時,它是一個「無聲錯誤」。是否有日誌或我可以找到類似的信息?另一個後續步驟:存儲過程最終會不同於觸發器?假設我有一個表,一個外部源將數據放入,另一個表我想根據第一個表放入數據,並使用當前數據更新它。存儲過程如何>觸發? – 2010-09-17 05:02:14
There沒有沉默的錯誤,或者它的錯誤,失敗和回滾,或者它成功了,但很有可能,你已經告訴它它沒有做你想做的事情,因爲行級觸發器在SQL語句存在讀取一致性問題,這往往會導致出現複雜且容易出錯的變通方法。 – 2010-09-17 22:03:50