PL SQL中的異常處理

2021-08-25 18:53:29 字數 2669 閱讀 2133

pl/sql

程式在執行的過程當中,可能會出現錯誤或者異常的情況,例如無法建立與oracle的連線,或者返回多行的錯誤。好的程式應該是對可能發生的異常情況進行處理,異常處理**在exception中實現。可以在exception塊中使用when語句來定義異常處理。when語句的使用方法如下:

exception

when 《異常情況名》 then

《異常處理**>

when 《異常情況名》 then

《異常處理**>

……when others then

《異常處理**>

異常情況名是oracle定義的異常情況標識,當when語句中指定的異常情況發生的時候,then關鍵字後面的異常處理**將會被執行:

異常情況名

ora**

sql**

說明access_into_null

ora-06530

-6530

試圖賦值到乙個未初始化的物件

collection_is_null

ora-06531

-6531

試圖使用未初始化的嵌入表或者變長陣列

cursor_already_open

ora-06511

-6511

試圖開啟乙個已經開啟的游標

dup_val_on_index

ora-00001

-1試圖向乙個表中插入資料,但該行資料不符合索引約束

invalid_cursor

ora-01001

-1001

試圖進行游標操作,但是卻不能開啟游標

invalid_number

ora-01722

-1722

字元向數字的轉換失敗

login_denied

ora-01017

-1017

試圖和oracle建立連線,但是卻不能提供有效的使用者名稱和口令

no_data_found

ora-01403

100執行了select into語句,但是卻沒有匹配的行資料

not_logged_on

ora-01012

-1012

試圖進行資料庫操作,但沒登陸

program_error

ora-06501

-6501

pl/sql內部錯誤

rowtype_mismatch

ora-06504

-6504

pl/sql返回的游標變數和主游標不匹配

self_is_null

ora-30625

-30625

試圖執行物件例程的乙個成員方法,但全程為空(null)

storage_error

ora-06500

-6500

儲存空間錯誤

subscript_beyond_count

ora-06532

-6532

試圖通過使用索引來引入嵌入表,但是此索引比表中的數值還要大

sys_invalid_rowid

ora-01410

-1410

試圖將乙個字串傳遞給rowid,但是操作失敗

timeout_on_resource

ora-00051

-51當oracle等待分配資源的時候,資源已經耗盡

too_many_rows

ora-01422

-1422

執行一條select into語句,但是卻返回了多行資料

value_error

ora-06502

-6502

當試圖將乙個值儲存到乙個變數時,此變數不接受這個值。可能是由於該值太大了或者與變數的型別不匹配

zero_divide

ora-01476

-1476

試圖用0做除數

以下是乙個控制異常的示例程式:

declare

var_namevarchar2(

100);

begin

selectaac003

intovar_name

fromac01、、

whereaac002=

'***x';

exception

whentoo_many_rowsthen

dbms_output.put_line(

'返回多條資料');

whenno_data_foundthen

dbms_output.put_line(

'沒有找到資料');

whenothersthen

dbms_output.put_line(

'執行有誤'

||sqlerrm);

end;

PLSQL中的異常處理

plsql中的異常一般有兩種 1 oracle 內部錯誤丟擲的異常 這又分為預定義異常 有錯誤號 常量定義 和 非預定義例外 僅有錯誤號,無常量定義 2 程式設計師顯式的丟擲的異常 處理預定義的例外 有些常見例外,oracle 都已經預定義好了,使用時無需預先宣告,比如 no data found ...

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 字元向數字轉換失敗 響...