婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Oracle例外用法實例詳解

Oracle例外用法實例詳解

熱門標簽:哪個400外呼系統(tǒng)好 山東crm外呼系統(tǒng)軟件 慧營銷crm外呼系統(tǒng)丹丹 哈爾濱電話機器人銷售招聘 圖吧網站地圖標注 愛客外呼系統(tǒng)怎么樣 百度地圖標注途經點 地圖標注養(yǎng)老院 開發(fā)外呼系統(tǒng)

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

一、例外分類

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

1)、預定義例外用于處理常見的oracle錯誤。

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

3)、自定義例外用于處理與oracle錯誤無關的其它情況。

下面通過一個小案例演示如果不處理例外看會出現什么情況?

編寫一個存儲過程,可接收雇員的編號,并顯示該雇員的姓名。

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;
/

隨便輸入不存在的編號,回車,會拋出如下異常:

ORA-01403: 未找到數據
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('編號未找到!');
END;
/

隨便輸入不存在的編號,回車,會友情提示:編號未找到!

二、處理預定義例外

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

1)、case_not_found預定義例外

在開發(fā)pl/sql塊中編寫case語句時,如果在when子句中沒有包含必須的條件分支,就會觸發(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語句沒有與' || V_SAL || '相匹配的條件');
END;
/
--調用存儲過程
SQL> EXEC SP_PRO6(7369);

case語句沒有與4444相匹配的條件

2)、cursor_already_open預定義例外

當重新打開已經打開的游標時,會隱含的觸發(fā)cursor_already_open例外

DECLARE
 CURSOR EMP_CURSOR IS
  SELECT ENAME, SAL FROM EMP;
BEGIN
 OPEN EMP_CURSOR; --聲明時游標已打開,所以沒必要再次打開
 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('游標已經打開');
END;
/

3)、dup_val_on_index預定義例外

在唯一索引所對應的列上插入重復的值時,會隱含的觸發(fā)例外

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

4)、invalid_cursorn預定義例外

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

例如:試圖從沒有打開的游標提取數據,或是關閉沒有打開的游標。則會觸發(fā)該例外

DECLARE
 CURSOR EMP_CURSOR IS
  SELECT ENAME, SAL FROM EMP;
 EMP_RECORD EMP_CURSOR%ROWTYPE;
BEGIN
 --open emp_cursor; --打開游標
 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('請檢測游標是否打開');
END;
/

5)、invalid_number預定義例外

當輸入的數據有誤時,會觸發(fā)該例外

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

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

6)、no_data_found預定義例外

下面是一個pl/sql 塊,當執(zhí)行select into沒有返回行,就會觸發(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預定義例外

當執(zhí)行select into語句時,如果返回超過了一行,則會觸發(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預定義例外

當執(zhí)行2/0語句時,則會觸發(fā)該例外

9)、value_error預定義例外

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

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

1、login_denied

當用戶非法登錄時,會觸發(fā)該例外

2、not_logged_on

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

3、storage_error

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

4、timeout_on_resource

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

三、非預定義例外

非預定義例外用于處理與預定義例外無關的oracle錯誤。使用預定義例外只能處理21個oracle 錯誤,而當使用pl/sql開發(fā)應用程序時,可能會遇到其它的一些oracle錯誤。比如在pl/sql塊中執(zhí)行dml語句時,違反了約束規(guī)定等等。在這樣的情況下,也可以處理oracle的各種例外,因為非預定義例外用的不多,這里我就不舉例了。

四、處理自定義例外

預定義例外和自定義例外都是與oracle錯誤相關的,并且出現的oracle 錯誤會隱含的觸發(fā)相應的例外;而自定義例外與oracle 錯誤沒有任何關聯,它是由開發(fā)人員為特定情況所定義的例外.

問題:請編寫一個pl/sql 塊,接收一個雇員的編號,并給該雇員工資增加1000元,如果該雇員不存在,請?zhí)崾尽?/p>

CREATE OR REPLACE PROCEDURE EX_TEST(SPNO NUMBER) IS
BEGIN
 UPDATE EMP SET SAL = SAL + 1000 WHERE EMPNO = SPNO;
END;
/
--調用存儲過程,
EXEC EX_TEST(56);

這里,編號為56 是不存在的,剛才的報異常了,為什么現在不報異常呢?
因為剛才的是select語句

怎么解決這個問題呢? 修改代碼,如下:

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

現在再測試一次:

SQL> exec ex_test(56);

沒有更新任何用戶

希望本文所述對大家Oracle數據庫程序設計有所幫助。

您可能感興趣的文章:
  • Oracle觸發(fā)器用法實例詳解
  • Oracle自動備份腳本
  • Oracle自動備份及自動備份步驟
  • Oracle創(chuàng)建Database Link的兩種方式詳解
  • oracle中變長數組varray,嵌套表,集合使用方法
  • oracle RETURNING 子句使用方法
  • Oracle數據庫中建立索引的基本方法講解
  • Oracle數據庫中外鍵的相關操作整理

標簽:承德 開封 青島 甘肅 固原 周口 和田 武漢

巨人網絡通訊聲明:本文標題《Oracle例外用法實例詳解》,本文關鍵詞  Oracle,例外,用法,實例,詳解,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle例外用法實例詳解》相關的同類信息!
  • 本頁收集關于Oracle例外用法實例詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    91蝌蚪porny成人天涯| 亚洲国产裸拍裸体视频在线观看乱了| 在线看不卡av| 色一情一乱一乱一91av| 色婷婷久久久久swag精品 | 国产女同性恋一区二区| 久久蜜桃一区二区| 国产精品电影一区二区| 欧美激情一区二区三区在线| 久久久噜噜噜久久中文字幕色伊伊| 欧美mv和日韩mv的网站| 亚洲精品在线观| 久久人人爽爽爽人久久久| 久久精品视频一区二区| 亚洲欧美怡红院| 亚洲一区二区三区视频在线播放| 午夜激情综合网| 麻豆免费看一区二区三区| 久久精品国产秦先生| 粉嫩久久99精品久久久久久夜| 成人一级视频在线观看| a4yy欧美一区二区三区| 欧美精品色一区二区三区| 日韩欧美中文字幕一区| 国产日韩精品一区二区三区在线| 中文字幕第一区第二区| 亚洲午夜久久久久久久久电影网| 日本色综合中文字幕| 国产91丝袜在线播放九色| 色呦呦网站一区| 欧美成人三级在线| 亚洲综合另类小说| 国产精品一线二线三线精华| 91亚洲精品久久久蜜桃网站| 欧美精品日韩综合在线| 国产精品视频一二三区| 亚洲成人tv网| 成人精品视频.| 56国语精品自产拍在线观看| 久久亚洲免费视频| 五月综合激情日本mⅴ| 成人免费黄色在线| 欧美成人免费网站| 亚洲成在人线在线播放| 成人小视频在线| 日韩免费性生活视频播放| 《视频一区视频二区| 精一区二区三区| 69堂亚洲精品首页| 亚洲裸体在线观看| 成人性生交大片免费看在线播放| 日韩一区二区三区四区| 亚洲综合在线免费观看| 成人免费va视频| 国产欧美1区2区3区| 美女视频黄免费的久久 | 精品va天堂亚洲国产| 亚洲成av人片在线观看| 色婷婷亚洲综合| 亚洲欧洲成人自拍| av电影在线不卡| 国产免费成人在线视频| 国产精品综合在线视频| 日韩欧美不卡一区| 日本在线播放一区二区三区| 欧美剧情片在线观看| 香蕉乱码成人久久天堂爱免费| 91丨porny丨最新| 国产精品国产三级国产aⅴ原创| 国产成人午夜精品5599| 国产亚洲va综合人人澡精品 | 亚洲国产精品尤物yw在线观看| 不卡av在线免费观看| 中文字幕日韩精品一区| 97se亚洲国产综合自在线观| 中文字幕视频一区| 91麻豆免费看| 亚洲一区二区三区在线看| 欧美在线啊v一区| 亚洲高清免费视频| 日韩午夜在线观看| 国产精品中文字幕欧美| 久久精品亚洲精品国产欧美kt∨ | 国产精品福利av| 91麻豆自制传媒国产之光| 亚洲一区二区三区四区五区中文| 在线视频国内一区二区| 亚洲影院在线观看| 日韩一区二区三区在线观看| 韩国女主播一区| 亚洲视频一区在线| 欧美人妇做爰xxxⅹ性高电影| 免费黄网站欧美| 欧美国产成人精品| 精品污污网站免费看| 美女在线视频一区| 国产精品福利一区二区三区| 欧美影片第一页| 黄网站免费久久| 自拍偷在线精品自拍偷无码专区 | 麻豆精品蜜桃视频网站| 久久精品视频网| 色综合久久久久综合体桃花网| 日日欢夜夜爽一区| 国产日韩高清在线| 欧美老女人第四色| 丁香激情综合国产| 天堂成人免费av电影一区| 欧美极品美女视频| 91麻豆精品国产综合久久久久久| 国产成人丝袜美腿| 天涯成人国产亚洲精品一区av| 精品日韩99亚洲| 欧美日韩中文字幕一区| 国产91在线观看丝袜| 丝袜诱惑制服诱惑色一区在线观看| 久久久久一区二区三区四区| 日本韩国一区二区| 成人综合婷婷国产精品久久免费| 亚洲综合激情小说| 国产精品久久久久永久免费观看| 欧美群妇大交群中文字幕| 成人黄色电影在线 | 亚洲欧洲日韩综合一区二区| 91精品免费观看| 欧美综合一区二区三区| 成人小视频免费在线观看| 激情综合色丁香一区二区| 亚洲成人av福利| 一区二区三区在线免费观看| 欧美国产精品中文字幕| 久久精品免费在线观看| 日韩欧美国产午夜精品| 欧美军同video69gay| 欧美亚洲一区二区在线观看| 不卡的电影网站| av成人免费在线观看| 丁香六月综合激情| 国产精品99久久久久久似苏梦涵| 秋霞影院一区二区| 蜜臀久久99精品久久久久宅男| 亚洲成人激情自拍| 亚洲二区在线视频| 亚洲成人激情av| 视频一区二区不卡| 日韩不卡手机在线v区| 亚洲国产精品久久艾草纯爱| 亚洲永久精品大片| 性久久久久久久久久久久| 午夜电影网一区| 美女视频一区在线观看| 久久99国产精品久久99| 国产精品中文字幕一区二区三区| 国产美女在线观看一区| 成人看片黄a免费看在线| 成人网在线免费视频| 一本大道久久a久久综合婷婷| 色综合中文综合网| 欧美哺乳videos| 久久伊人中文字幕| 久久精品人人做| 日韩伦理免费电影| 亚洲成a人在线观看| 蜜臀va亚洲va欧美va天堂| 国产在线视视频有精品| 成人福利视频网站| 欧美日韩一区二区三区在线看| 欧美高清视频不卡网| 欧美精品一区二区三区蜜桃| 欧美极品美女视频| 亚洲国产cao| 国产一区91精品张津瑜| 91热门视频在线观看| 欧美日韩成人在线| 国产亚洲精久久久久久| 亚洲尤物在线视频观看| 精品一区二区综合| 91理论电影在线观看| 91精品国产综合久久精品app| 久久久亚洲欧洲日产国码αv| 成人免费在线播放视频| 日韩精品电影一区亚洲| 国产精品一区二区免费不卡| 一本一道久久a久久精品综合蜜臀| 欧美日韩三级在线| 国产欧美精品区一区二区三区| 亚洲欧美成人一区二区三区| 美女一区二区视频| 91老司机福利 在线| 精品91自产拍在线观看一区| 亚洲黄色免费电影| 国产精品一区二区果冻传媒| 色综合网色综合| 国产午夜一区二区三区| 亚洲一线二线三线视频| 国产69精品久久777的优势| 777午夜精品免费视频| 综合激情网...| 国产91精品露脸国语对白| 91精品国模一区二区三区|