2016-04-15 64 views
1

我正在查找可能出現的每個SQL命令的所有可能出現異常的列表。 例如:如果我有以下代碼:每個SQL命令可能出現的異常列表

Procedure p1 
as 
    l_cnt number; 
Begin 
    Select count(*) 
    Into l_cnt 
    From xyz; 
Exceptions 
    When ... Then 
    ... 
End; 

現在我想知道在這個SELECT INTO語句會出現,這例外。我知道一些,但他們都有嗎?這就是爲什麼我要查看每個SQL可能出現的異常的概述。

上面的問題是:是否建議在PLSQL中捕獲SQL代碼引發的所有可能的異常? 我知道「當別人」這是我atm捕捉「未知」異常的唯一方式。 當然,如果SQL的可能異常列表很長,我只會處理相關的異常,並通過「其他人」來捕捉其他異常。

在此先感謝您的輸入!

+0

@MitchWheat,未知表,列等 – jarlh

+1

@jarlh:如果表不存在,則無法編譯該過程,並且如果在創建過程後刪除該表,則該過程將變爲無效,您無法執行它。 –

+0

我的評論是關於如果選擇可以提出一個錯誤。回答「選擇如何引發錯誤?」。 – jarlh

回答

1

爲了誠實,你的問題很常見。 PL/SQL跑出 - 數據庫的同時等待資源

  • 的Storage_Error發生超時 -

    • TIMEOUT_ON_RESOURCE

      例如,您的查詢可能會導致以下情況除外的內存或內存已損壞

    我會建議從official documentation學習預先排除的異常,並選擇合適的針對每種情況。

  • +0

    我知道這個列表。但是並非每一個提到的異常都可能發生在每個陳述上?那麼如何過濾到選擇進入哪個應該讓我列出你的列表。 – SebastianK

    +0

    對於你的例子,我不會使用具體的exaptions No_data_found和to_many_rows最常用 Rarly - %_cursor,index_dub_value,invalid number,zero_devide –

    +0

    other,只能用於真正特定的情況。 –

    相關問題