PL SQL 異常高階概念

2021-07-09 02:42:10 字數 1673 閱讀 6437

做好了準備想要接受難一點的概念,結果發現,其實這一章很水。

orerror_number是與特定錯誤訊息相關聯的錯誤編號,這個編號的範圍在-20999到-20000之間(避免與內建編號衝突)。

keep_errors是boolean型別,決定是否加入錯誤棧(true)或者替換錯誤棧(false)。預設是false。

示例如下:

1

declare

2 a number;3

begin

4 a :=-1

;5if a <

0then

20000, '

its negative');

7else

8 dbms_output.put_line('

its not negative');

9endif;

10end;

注意在最後已經不用去捕獲了,因為已經在第6行的時候捕捉到了異常。在pl/sql中會彈出報錯的對話方塊。

報錯資訊由使用者自定義。

2.exception_init 編譯指令

在有些情況下,程式需要處理具有特殊編號的oracle錯誤,而不是根據名稱來引用它。或者說,使用者希望自定義錯誤的名稱。這時,可以使用名為編譯指令的結構。

使用exception_init編譯指令,可以把某個oracle錯誤編號與使用者的自定義名稱建立關聯。

語法如下:

declare

exception_name exception;

pragma exception_init(exception_name, error_code);

先看看不用編譯指令的情況下的捕捉異常:

1

declare

2 a number;3

begin

4 a :='a

';5 dbms_output.put_line('

can u see me?');

6exception

7when value_error then dbms_output.put_line('

exception here');

8end;

value_error是內建的錯誤名稱,這樣做也沒有什麼問題。如果用編譯指令的話,如下:

1

declare

2 a number;3

ex exception;

4 pragma exception_init(ex, -

6502);5

begin

6 a :='a

';7 dbms_output.put_line('

can u see me?');

8exception

9when ex then dbms_output.put_line('

exception here');

10end;

編譯了乙個異常,-6502是錯誤編號,而value_error是內建與之關聯的錯誤名稱。如此一來,就可以將value_error改為ex了,也可以在異常處理中使用ex來捕捉它了。

不過這樣好像也沒什麼大作用啊……

pl sql異常處理

丟擲異常 oracle有三種型別的異常錯誤 1 預定義 predefined 異常 oracle預定義的異常情況大約有24個。對這種異常情況的處理,無需在程式中定義,由oracle自動將其引發。2 非預定義 predefined 異常 即其他標準的oracle錯誤。對這種異常情況的處理,需要使用者在...

PLSQL 異常處理

1.異常塊begin pl sql塊 exception when no data found then 沒有找到資料 響應命令 when too many rows then 返回多行,隱式游標每次只能檢索一行資料 響應命令 when invalid number then 字元向數字轉換失敗 響...

plsql異常處理

1.在plsql 中 形式引數和 where 語句中的引數不能一樣,否則的話就就會出現個中莫名其妙的錯誤。function validate import supplier p task seq in number,任務號 p line num in number,行號 p vendor name ...