Oracle之例外(异常)
/*
?? 例外? 其實(shí)就是異常
???????? 處理發(fā)生的異常
???????? java try{}catch(OutofBoundIndexException){}catch(Exception e){}
???????? 數(shù)據(jù)庫(kù)對(duì)異常的處理
???????? exception
???????????? when 異常類型 then
???????????????? 處理語(yǔ)句
???????? 數(shù)據(jù)庫(kù)異常分類? 運(yùn)行時(shí)異常 編譯時(shí)異常 ClassCast ClassNotFound
????????????????? 系統(tǒng)定義異常
????????????????????? 除數(shù)為0
????????????????????? 賦值錯(cuò)誤? 類型轉(zhuǎn)換錯(cuò)誤
?????????????????????
????????????????? 自定義異常
???????????????????? 使用場(chǎng)景:是不滿足某些特定業(yè)務(wù)場(chǎng)景
???????????????????? java new 自定義類 繼承Exception errorCode errorMsg
????????????????? 數(shù)據(jù)庫(kù)
???????????????????? dept_no_emp? exception? --聲明變量 類型為異常類型
???????????????????? raise dept_no_emp
???????
*/
--除數(shù)為零? zero_divide
--類型轉(zhuǎn)換? 把字符串賦值給數(shù)值
declare
?? v_n number :=0;
?? v_m number :=1;
begin
?? v_n := 'ss';
?? v_m:=v_m/v_n;
exception
?? when value_error?? then
????? dbms_output.put_line('賦值錯(cuò)誤');
?? when zero_divide?? then
????? dbms_output.put_line('除數(shù)不能為0');
?? when others?? then??? --others 代表最大范圍的異常? Exception
???? dbms_output.put_line('出現(xiàn)異常');
end;
--太多記錄數(shù)
declare?
???? emp_row?? emp%rowtype;???? --記錄類型變量
begin?
???? select * into emp_row from emp;???
exception
??? when too_many_rows then
????? dbms_output.put_line('太多記錄數(shù)請(qǐng)使用游標(biāo)');
end;
---自定義異常 數(shù)據(jù)庫(kù)不報(bào)錯(cuò) 不滿足業(yè)務(wù)場(chǎng)景
--使用游標(biāo)查詢40號(hào)部門的員工信息 如果沒有員工提示我 招人
declare
??? cursor emp_cursor(dno number) is select * from emp where deptno=dno;? --聲明游標(biāo)
??? emp_row emp%rowtype; --記錄類型用于接收游標(biāo)提取
??? dept_no_emp exception; --聲明自定義異常
begin
??? open emp_cursor(40); --打開游標(biāo)
??? fetch emp_cursor into emp_row;? --保證先提取再判斷
??? if emp_cursor%notfound then?
????? --沒有員工 拋出異常
????? raise dept_no_emp;
??? end if;
??? close emp_cursor;--關(guān)閉游標(biāo)
exception
??? when dept_no_emp then
????? dbms_output.put_line('部門沒有員工,快點(diǎn)招人');
end;
轉(zhuǎn)載于:https://www.cnblogs.com/flyuphigh/p/8072205.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Oracle之例外(异常)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java项目皮肤包_java swing
- 下一篇: 用友通ufo报表找不到服务器,用友软件U