亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 數(shù)據(jù)庫(kù) > Oracle > 正文

Oracle例外用法實(shí)例詳解

2024-08-29 13:58:54
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了Oracle例外用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Oracle例外的概念,功能及相關(guān)使用技巧,需要的朋友可以參考下
 

本文實(shí)例講述了Oracle例外用法。分享給大家供大家參考,具體如下:

一、例外分類

oracle將例外分為預(yù)定義例外、非預(yù)定義例外和自定義例外三種。

1)、預(yù)定義例外用于處理常見(jiàn)的oracle錯(cuò)誤。

2)、非預(yù)定義例外用于處理預(yù)定義例外不能處理的例外。

3)、自定義例外用于處理與oracle錯(cuò)誤無(wú)關(guān)的其它情況。

下面通過(guò)一個(gè)小案例演示如果不處理例外看會(huì)出現(xiàn)什么情況?

編寫一個(gè)存儲(chǔ)過(guò)程,可接收雇員的編號(hào),并顯示該雇員的姓名。

sql代碼如下:

SET SERVEROUTPUT ON;DECLARE V_ENAME EMP.ENAME%TYPE;BEGIN SELECT ENAME INTO V_ENAME FROM EMP WHERE EMPNO = &GNO; DBMS_OUTPUT.PUT_LINE('名字:' || V_ENAME);END;/

隨便輸入不存在的編號(hào),回車,會(huì)拋出如下異常:

ORA-01403: 未找到數(shù)據(jù)
ORA-06512: 在line 6

例外捕獲的sql代碼如下:

SET SERVEROUTPUT ON;DECLARE V_ENAME EMP.ENAME%TYPE;BEGIN SELECT ENAME INTO V_ENAME FROM EMP WHERE EMPNO = &GNO; DBMS_OUTPUT.PUT_LINE('名字:' || V_ENAME);EXCEPTION WHEN no_data_found THEN  DBMS_OUTPUT.PUT_LINE('編號(hào)未找到!');END;/

隨便輸入不存在的編號(hào),回車,會(huì)友情提示:編號(hào)未找到!

二、處理預(yù)定義例外

預(yù)定義例外是由pl/sql所提供的系統(tǒng)例外。當(dāng)pl/sql應(yīng)用程序違反了oracle規(guī)定的限制時(shí),則會(huì)隱含的觸發(fā)一個(gè)內(nèi)部例外。pl/sql為開(kāi)發(fā)人員提供了二十多個(gè)預(yù)定義例外。我們給大家介紹常用的例外。

1)、case_not_found預(yù)定義例外

在開(kāi)發(fā)pl/sql塊中編寫case語(yǔ)句時(shí),如果在when子句中沒(méi)有包含必須的條件分支,就會(huì)觸發(fā)case_not_found例外:

SET SERVEROUTPUT ON;CREATE OR REPLACE PROCEDURE SP_PRO6(SPNO NUMBER) IS V_SAL EMP.SAL%TYPE;BEGIN SELECT SAL INTO V_SAL FROM EMP WHERE EMPNO = SPNO; CASE  WHEN V_SAL < 1000 THEN   UPDATE EMP SET SAL = SAL + 100 WHERE EMPNO = SPNO;  WHEN V_SAL < 2000 THEN   UPDATE EMP SET SAL = SAL + 200 WHERE EMPNO = SPNO; END CASE;EXCEPTION WHEN CASE_NOT_FOUND THEN  DBMS_OUTPUT.PUT_LINE('case語(yǔ)句沒(méi)有與' || V_SAL || '相匹配的條件');END;/--調(diào)用存儲(chǔ)過(guò)程SQL> EXEC SP_PRO6(7369);

case語(yǔ)句沒(méi)有與4444相匹配的條件

2)、cursor_already_open預(yù)定義例外

當(dāng)重新打開(kāi)已經(jīng)打開(kāi)的游標(biāo)時(shí),會(huì)隱含的觸發(fā)cursor_already_open例外

DECLARE CURSOR EMP_CURSOR IS  SELECT ENAME, SAL FROM EMP;BEGIN OPEN EMP_CURSOR; --聲明時(shí)游標(biāo)已打開(kāi),所以沒(méi)必要再次打開(kāi) FOR EMP_RECORD1 IN EMP_CURSOR LOOP  DBMS_OUTPUT.PUT_LINE(EMP_RECORD1.ENAME); END LOOP;EXCEPTION WHEN CURSOR_ALREADY_OPEN THEN  DBMS_OUTPUT.PUT_LINE('游標(biāo)已經(jīng)打開(kāi)');END;/

3)、dup_val_on_index預(yù)定義例外

在唯一索引所對(duì)應(yīng)的列上插入重復(fù)的值時(shí),會(huì)隱含的觸發(fā)例外

BEGIN INSERT INTO DEPT VALUES (10, '公關(guān)部', '北京');EXCEPTION WHEN DUP_VAL_ON_INDEX THEN  DBMS_OUTPUT.PUT_LINE('在deptno列上不能出現(xiàn)重復(fù)值');END;/

4)、invalid_cursorn預(yù)定義例外

當(dāng)試圖在不合法的游標(biāo)上執(zhí)行操作時(shí),會(huì)觸發(fā)該例外

例如:試圖從沒(méi)有打開(kāi)的游標(biāo)提取數(shù)據(jù),或是關(guān)閉沒(méi)有打開(kāi)的游標(biāo)。則會(huì)觸發(fā)該例外

DECLARE CURSOR EMP_CURSOR IS  SELECT ENAME, SAL FROM EMP; EMP_RECORD EMP_CURSOR%ROWTYPE;BEGIN --open emp_cursor; --打開(kāi)游標(biāo) FETCH EMP_CURSOR INTO EMP_RECORD; DBMS_OUTPUT.PUT_LINE(EMP_RECORD.ENAME); CLOSE EMP_CURSOR;EXCEPTION WHEN INVALID_CURSOR THEN  DBMS_OUTPUT.PUT_LINE('請(qǐng)檢測(cè)游標(biāo)是否打開(kāi)');END;/

5)、invalid_number預(yù)定義例外

當(dāng)輸入的數(shù)據(jù)有誤時(shí),會(huì)觸發(fā)該例外

比如:數(shù)字100寫成了loo就會(huì)觸發(fā)該例外

SET SERVEROUTPUT ON;BEGIN UPDATE EMP SET SAL = SAL + 'AAA';EXCEPTION WHEN INVALID_NUMBER THEN  DBMS_OUTPUT.PUT_LINE('輸入的數(shù)字不正確');END;/

6)、no_data_found預(yù)定義例外

下面是一個(gè)pl/sql 塊,當(dāng)執(zhí)行select into沒(méi)有返回行,就會(huì)觸發(fā)該例外

SET serveroutput ON;DECLARE V_SAL EMP.SAL%TYPE;BEGIN SELECT SAL INTO V_SAL FROM EMP WHERE ENAME = 'ljq';EXCEPTION WHEN NO_DATA_FOUND THEN  DBMS_OUTPUT.PUT_LINE('不存在該員工');END;/

7)、too_many_rows預(yù)定義例外

當(dāng)執(zhí)行select into語(yǔ)句時(shí),如果返回超過(guò)了一行,則會(huì)觸發(fā)該例外。

DECLARE V_ENAME EMP.ENAME%TYPE;BEGIN SELECT ENAME INTO V_ENAME FROM EMP;EXCEPTION WHEN TOO_MANY_ROWS THEN  DBMS_OUTPUT.PUT_LINE('返回了多行');END;/

8)、zero_divide預(yù)定義例外

當(dāng)執(zhí)行2/0語(yǔ)句時(shí),則會(huì)觸發(fā)該例外

9)、value_error預(yù)定義例外

當(dāng)在執(zhí)行賦值操作時(shí),如果變量的長(zhǎng)度不足以容納實(shí)際數(shù)據(jù),則會(huì)觸發(fā)該例外value_error

其它預(yù)定義例外(這些例外不是在pl/sql里觸發(fā)的,而是在用oracle時(shí)觸發(fā)的,所以取名叫其它預(yù)定義例外)

1、login_denied

當(dāng)用戶非法登錄時(shí),會(huì)觸發(fā)該例外

2、not_logged_on

如果用戶沒(méi)有登錄就執(zhí)行dml操作,就會(huì)觸發(fā)該例外

3、storage_error

如果超過(guò)了內(nèi)存空間或是內(nèi)存被損壞,就觸發(fā)該例外

4、timeout_on_resource

如果oracle在等待資源時(shí),出現(xiàn)了超時(shí)就觸發(fā)該例外

三、非預(yù)定義例外

非預(yù)定義例外用于處理與預(yù)定義例外無(wú)關(guān)的oracle錯(cuò)誤。使用預(yù)定義例外只能處理21個(gè)oracle 錯(cuò)誤,而當(dāng)使用pl/sql開(kāi)發(fā)應(yīng)用程序時(shí),可能會(huì)遇到其它的一些oracle錯(cuò)誤。比如在pl/sql塊中執(zhí)行dml語(yǔ)句時(shí),違反了約束規(guī)定等等。在這樣的情況下,也可以處理oracle的各種例外,因?yàn)榉穷A(yù)定義例外用的不多,這里我就不舉例了。

四、處理自定義例外

預(yù)定義例外和自定義例外都是與oracle錯(cuò)誤相關(guān)的,并且出現(xiàn)的oracle 錯(cuò)誤會(huì)隱含的觸發(fā)相應(yīng)的例外;而自定義例外與oracle 錯(cuò)誤沒(méi)有任何關(guān)聯(lián),它是由開(kāi)發(fā)人員為特定情況所定義的例外.

問(wèn)題:請(qǐng)編寫一個(gè)pl/sql 塊,接收一個(gè)雇員的編號(hào),并給該雇員工資增加1000元,如果該雇員不存在,請(qǐng)?zhí)崾尽?/p>

CREATE OR REPLACE PROCEDURE EX_TEST(SPNO NUMBER) ISBEGIN UPDATE EMP SET SAL = SAL + 1000 WHERE EMPNO = SPNO;END;/--調(diào)用存儲(chǔ)過(guò)程,EXEC EX_TEST(56);

這里,編號(hào)為56 是不存在的,剛才的報(bào)異常了,為什么現(xiàn)在不報(bào)異常呢?
因?yàn)閯偛诺氖莝elect語(yǔ)句

怎么解決這個(gè)問(wèn)題呢? 修改代碼,如下:

--自定義例外CREATE OR REPLACE PROCEDURE EX_TEST(SPNO NUMBER) IS--定義一個(gè)例外MYEX EXCEPTION;BEGIN--更新用戶salUPDATE EMP SET SAL = SAL + 1000 WHERE EMPNO = SPNO;--sql%notfound 這是表示沒(méi)有update--raise myex;觸發(fā)myexIF SQL%NOTFOUND THEN RAISE MYEX;END IF;EXCEPTIONWHEN MYEX THEN DBMS_OUTPUT.PUT_LINE('沒(méi)有更新任何用戶');END;/

現(xiàn)在再測(cè)試一次:

SQL> exec ex_test(56);

沒(méi)有更新任何用戶

希望本文所述對(duì)大家Oracle數(shù)據(jù)庫(kù)程序設(shè)計(jì)有所幫助。



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
日本免费网站在线观看| 亚洲最大成人网4388xx| 在线观看午夜看亚太视频| 成人毛片视频网站| 日韩大尺度在线观看| 精品伊人久久大线蕉色首页| 中文字幕黄色av| 99在线视频观看| 天天操天天爱天天干| 国产免费叼嘿网站免费| 中文字幕国产亚洲2019| 一区二区三区四区精品在线视频| 国产蜜臀一区二区打屁股调教| 欧美成人精品在线观看| 一二三四视频在线社区中文字幕2| 欧美日韩一区二区三区69堂| 日韩精品视频中文在线观看| 欧美极度另类videos高清| 免费黄视频网站| wwww国产精品欧美| 久久亚洲精品石原莉奈| 在线免费观看毛片| 免费网站看av| 亚洲电影欧美电影有声小说| 这里都是精品| 日本一区二区视频在线观看| 欧美成人高清视频在线观看| 国外av网站| 怡红院亚洲色图| 国内免费久久久久久久久久久| 国产精品日韩欧美一区| 国内久久久精品| 国产秀色在线www免费观看| www.久久草.com| 8x8x视频在线| 麻豆电影传媒二区| 久久av一区| 国内精品久久久久久久果冻传媒| 久久艳妇乳肉豪妇荡乳av| 国产精品成人观看视频国产奇米| 小次郎av收藏家| 久久久国产欧美| 欧洲成人一区| 欧美二区在线视频| 激情视频免费| 亚洲欧美日韩国产另类专区| 免费成人高清视频| 成人福利视频网| 国产精品嫩草在线观看| 免费一级欧美在线观看视频| 国产jizzjizz一区二区| 国产超碰在线| 中国日本在线视频中文字幕| 日本成人免费在线观看| 久久精品国产99国产精品澳门| 精品国产区在线| 黑人巨大精品欧美一区二区桃花岛| 国产精品久久成人免费观看| 久久久精品欧美丰满| 成年网站免费入口在线观看| 欧美日韩亚洲一区在线观看| 成人精品网站在线观看| 日本伦理一区二区三区| 亚洲男男av| 欧美一级黄色录像片| 一本色道精品久久一区二区三区| 亚洲综合视频在线播放| 日本免费一区二区视频| jizz一区二区| 海角国产乱辈乱精品视频| 国产二级一片内射视频播放| 四虎国产精品成人免费入口| 久久精品视频91| 亚洲a区在线视频| 日本一道高清亚洲日美韩| 国产日本欧美一区二区三区在线| 91高潮在线观看| 一区二区三区四区| 国产精品一区二区无码对白| 日韩三区在线观看| 五月婷婷开心中文字幕| 欧美 日韩 亚洲 一区| 亚洲成熟少妇视频在线观看| 日韩电影大全免费观看2023年上| 黄色大片在线免费看| 625成人欧美午夜电影| 97在线播放免费观看| 国产精品免费观看高清| 九九热精品在线播放| 亚洲欧美激情视频| 成人在线免费电影| 国产成人啪精品视频免费网| 国产精品无码网站| 精品中文视频在线| 一区二区蜜桃| 五月婷婷激情五月| 三级在线看中文字幕完整版| 成人av资源在线| 国产v综合ⅴ日韩v欧美大片| 欧美一区二区三区成人片在线| 欧美性xxxx在线播放| 91丝袜美腿美女视频网站| 一区二区三区中文字幕精品精品| a毛片不卡免费看片| 丁香亚洲综合激情啪啪综合| 天天色天天操综合| 久久 天天综合| 中文在线字幕免费观看| 久久久久久91精品色婷婷| 亚洲午夜精品久久久中文影院av| 午夜视频在线观看免费视频| 国产孕妇孕交大片孕| 欧美a级一区| 先锋影音网一区二区| 久久成人福利视频| 欧美性猛片xxxx免费看久爱| 国产精品91一区二区三区| 日韩色在线观看| 一区二区不卡视频| 一区二区福利视频| 在线观看日韩av电影| 日韩专区视频| 你懂的在线观看视频| 国产男男gay体育生网站| 日本免费高清视频| 丁香花五月婷婷| 国产精品久久久久久中文字| 日韩成人av在线播放| 国产成人免费高清| 国产精品va在线播放| 国产精品久久久久久久久久久不卡| 亚洲资源在线播放| 国产欧美日韩精品丝袜高跟鞋| 黄页免费在线观看| 成人深夜在线观看| 97超级碰在线看视频免费在线看| 久久久久国产成人精品亚洲午夜| 美丽的姑娘在线观看免费动漫| 国产美女娇喘av呻吟久久| 麻豆传媒在线视频| 欧美日本一区二区高清播放视频| 小说区图片区亚洲| 中文字幕免费视频观看| 久草网站在线观看| 成人福利视频网站| 国内自拍偷拍视频| 亚洲精品国产视频| 日韩av成人在线| 欧美丝袜第三区| 国产成人精品免费视频网站| 日韩在线欧美在线国产在线| 国产精品不卡在线观看| 精品欧美一区二区久久久久| 欧美激情精品久久久久| 亚洲午夜激情| 色女人在线视频| 黄色片免费网址| 国产精品99精品无码视亚| 欧美新色视频| 欧美黑人xxxx| 91精品久久久久久久久久久久| 99精品小视频| 超碰国产精品久久国产精品99| 亚洲欧美日韩在线高清直播| 91av在线影院| 日本在线观看不卡视频| 99热99re6国产在线播放| 天堂成人在线观看| 国产91精品不卡视频| 四季av一区二区三区| 99久久er热在这里只有精品15| 久久久精品毛片| 日韩美女一级视频| 久久久一本精品| 欧美一级久久久久久久久大| 亚洲精品99久久久久| 国产情侣小视频| 国产精品系列视频| 91麻豆精品国产| 亚洲国产一区二区三区青草影视| 日本网站在线播放| 97超级碰在线看视频免费在线看| 91午夜在线观看| 91精品99| 51精品秘密在线观看| 污污视频网站免费观看| 91popny丨九色丨国产| 成人手机在线播放| 希岛爱理av免费一区二区| 在线成人av| www.久久爱.cn| 国产国语**毛片高清视频| 国产精品久久久久久久成人午夜| 国产h视频在线观看| 国产污片在线观看| 热re99久久精品国产99热| 国产精品第七十二页| 欧美激情视频一区二区三区在线播放| 夜夜操免费视频| 在线观看亚洲欧美| 少妇一区视频| 日本少妇高清视频| 欧美三级黄网| av在线电影网站| 欧美猛男同性videos| 久久免费精品一区二区| 欧美日韩精品是欧美日韩精品| 日韩精品一区二区在线播放| 在线看欧美日韩| 最新电影电视剧在线观看免费观看| a在线免费观看| 日本黄xxxxxxxxx100| 日本aⅴ免费视频一区二区三区| **孕交吃奶水一级毛片| 99精品国产高清一区二区麻豆| 欧美xxxxbbbb在线播放| 日韩毛片免费观看| 国产精品999视频| 欧美日韩一区二区三区四区在线观看| 日韩大片在线永久免费观看网站| 精品一区二区三区视频| 国产成人免费在线| 99久久精品无码一区二区毛片| 向日葵视频成人app网址| 亚洲欧美日韩高清在线| 一级黄色片播放| 伊人av在线| 麻豆映画在线观看| 97人妻精品一区二区三区| 久久99久久99精品免观看粉嫩| 亚洲一区二区在线看| 国产av精国产传媒| 国产原创一区| 亚洲国产一成人久久精品| 成人免费乱码大片a毛片软件| 天堂网成人在线| 免费黄漫在线观看| 色狠狠桃花综合| 大胆人体一区二区| 久久香蕉国产线看观看99| 老司机午夜精品视频| 强迫凌虐淫辱の牝奴在线观看| 中文字幕欧美精品日韩中文字幕| 日韩精品福利视频| 97在线视频免费观看完整版| 国产一区二区三区四区尤物| 亚洲一区在线视频| 黄色毛片网站| 97视频人免费观看| 永久www成人看片| 夫妇露脸对白88av| 国产香蕉视频在线观看| 久久人人爽人人爽人人av| 日韩免费观看在线观看| 2024国产精品| 亚洲欧美日韩第一页| 日韩亚洲视频在线| 动漫精品一区二区| 亚洲av综合色区无码一二三区| 毛片基地黄久久久久久天堂| 国产极品粉嫩福利姬萌白酱| 欧美视频中文字幕在线| 成人免费av网站| 青青草国产在线观看| 偷拍精品一区二区三区| 欧美日韩中文另类| www.日本一区| 免费看国产一级片| 中文字幕在线影院| 国产一级黄色片免费| 国产精品婷婷午夜在线观看| 青青青爽久久午夜综合久久午夜| 青青草娱乐在线| 欧洲一区二区三区精品| 国产 高清 精品 在线 a| 亚洲另类欧美日韩| 一本大道久久a久久精品| 黄色av一区二区三区| 色噜噜狠狠一区二区三区| 综合网日日天干夜夜久久| 人妻无码中文字幕| 一级黄色片在线| 国产婷婷色一区二区在线观看| 曰本人一级毛片免费完整视频| 国产小视频在线播放| 欧美性猛交丰臀xxxxx网站| 国产精品手机在线观看| 蜜桃av免费看| 福利片在线一区二区| 日本天堂在线观看| 麻豆福利在线观看| 天天操天天干天天操天天干| 一区二区三区免费网站| 亚洲精品国久久99热| 男人猛进猛出女人屁股视频| 国产无码精品久久久| 99久久婷婷国产一区二区三区| 天天做日日爱夜夜爽| 国产1区在线观看| 欧美性色19p| 91高跟黑色丝袜呻吟在线观看| 亚洲a∨日韩av高清在线观看| 欧美人动性xxxxz0oz| 一本色道久久综合狠狠躁的番外| 亚洲制服丝袜av| 日本不卡免费新一二三区| 欧美成人蜜桃| 国产91亚洲精品| 久久一本综合| 日韩手机在线观看视频| 嫩草影院懂你的影院| 在线中文字幕电影| 成人婷婷网色偷偷亚洲男人的天堂| 99热国产免费| 精品无码国产一区二区三区51安| 国产精品色午夜在线观看| 夜色资源站国产www在线视频| 91官网在线| 亚洲欧美一区二区三区久本道91| 久久精品一区二区| av中文字幕免费观看| 欧美另类老肥妇| 久久久久久久久久电影| 日本一区二区三区视频在线| 2021年精品国产福利在线| 日日天天狠狠| 欧美在线高清视频| 国产一国产二国产三|