oracle主動丟擲異常

strivechao發表於2021-05-24

RAISE_APPLICATION_ERROR內建函式用於丟擲一個異常並給異常賦予一個錯誤號以及錯誤資訊。自定義異常的預設錯誤號是+1,預設資訊是User_Defined_Exception。RAISE_APPLICATION_ERROR函式能夠在pl/sql程式塊的執行部分和異常部分呼叫,顯式丟擲帶特殊錯誤號的命名異常。  Raise_application_error(error_number,message[,true,false]))

  

  錯誤號的範圍是-20,000到-20,999。錯誤資訊是文字字串,最多為2048位元組。TRUE和FALSE表示是新增(TRUE)進錯誤堆(ERROR STACK)還是覆蓋(overwrite)錯誤堆(FALSE)。預設情況下是FALSE。

  

  如下程式碼所示:

  IF product_not_found THEN

  RAISE_APPLICATION_ERROR(-1111, 'Invald product code', TRUE);

  END IF;


儲存過程中的when others then 和 raise


XCEPTION
  when others then
    rollback;
    dbms_output.put_line('code:' || sqlcode);
    dbms_output.put_line('errm:' || sqlerrm);
    raise;
when others then和raise;
分別是什麼意思
 

異常分很多種類,如NO_FOUND。others處本應該寫異常名稱,如果不想把異常分得那麼細,可以籠統一點用others來捕獲,
即所有異常均用others來捕獲。
when others then表示是其它異常。
raise表示丟擲異常,讓User可以看到。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25469263/viewspace-2773616/,如需轉載,請註明出處,否則將追究法律責任。

相關文章