999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

談談Oracle數據庫異常處理

2017-01-30 06:42:57
山西青年 2017年17期
關鍵詞:定義程序數據庫

畢 桂 徐 霖

無錫工藝職業技術學院,江蘇 宜興 214206

談談Oracle數據庫異常處理

畢 桂 徐 霖

無錫工藝職業技術學院,江蘇 宜興 214206

進行Oracle數據庫開發中,在程序的運行過程中,可能會因為各種原因發生這樣或那樣的錯誤,就需要針對錯誤進行處理,異常處理就是這樣的一段程序。有了異常處理就可以提高我們的程序代碼質量,一個好的程序都必含有能夠處理發生的任何錯誤。PL/SQL用異常和異常處理器來實現錯誤處理,它的異常處理機制提供了能夠處理前面未處理異常的功能。

Oracle數據庫;程序代碼;異常處理;PL/SQL

一、異常的定義和分類

Oracle中出現錯誤的情形通常分為程序在編譯時錯誤(compile-time error)和程序在運行時錯誤(run-timeerror)。一個程序在處理運行時出現錯誤,這是異常處理,一個程序在編譯時的錯誤,并不是異常處理,我們這里所說的異常處理是指程序通過編譯沒有錯誤,而是在程序運行中出現的錯誤。當程序在運行時發生錯誤,異常被觸發,程序的正常執行過程被終止,程序無條件轉到異常處理部分,在Oracle數據庫允許聲明其他異常條件類型以擴展錯誤/異常處理,有了這樣的擴展使PL/SQL的異常處理非常靈活。在Oracle數據庫中,PL/SQL將異常分為預定義異常和用戶定義異常。

(一)預定義異常

Oracle數據庫自身為用戶提供了大量的、可以在PL/SQL中使用的預定以異常,方便用戶檢查代碼失敗的一般原因,它們都定義在Oracle的核心PL/SQL中。每當PL/SQL違背了Oracle原則或超越了系統依賴的原則時就會隱式的產生內部異常。每個Oracle錯誤都有一個號碼,在PL/SQL中通過名字處理預定義異常,PL/SQL為一些Oracle公共錯誤進行了預定義。如SELECT INTO語句返回多行數據時,PL/SQL就會觸發預定義異常TOO_MANY_ROWS。

(二)自定義異常

用戶自定義異常不一定必須是Oracle返回的系統錯誤,這些錯誤Oracle數據庫本身無法知曉,也不能控制。用戶可以在自己的應用程序中創建可觸發及可處理的自定義異常,和預定義異常不同的是,用戶定義的異常,系統不會自動觸發(這種異常對系統來說不一定是錯誤),需要用戶來觸發異常,另外用戶定義的異常,需要在聲明部分定義。用戶定義的異常處理部分基本上和預定義異常相同。

二、自定義異常

Oracle數據庫內部預定義異常僅僅20個左右,而在實際程序運行過程中產生的異常情況就會很多,為此Oracle數據庫經常使用錯誤編號和相關描述給出異常信息。數據庫設計人員常常會根據實際的業務邏輯情況定義一些特殊異常。Oracle數據庫的自定義異??梢苑譃殄e誤編號異常和業務邏輯異常。

(一)錯誤編號異常

錯誤編號異常是指Oracle數據庫系統發生錯誤時,系統就會顯示出錯誤編號和相關信息的異常。用戶可以根據錯誤編號來完成異常處理,由于錯誤編號比較抽象,不便于用戶理解和記憶。對于這種類型的異常,首先在Oracle數據中PL/SQL塊的聲明部分使用EXCEPTION類型定義一個異常變量名,然后使用語句PRAGMA EXCEPTION _INIT為“錯誤編號”關聯這個異常變量名,最后可以像對待Oracle數據庫系統預定義異常一樣處理了。我們通過一個實例,來說明一下,我們錯誤編號異常的使用。假設我們在Oracle數據庫中已經創建了一個表單,名為student(編號(id),姓名(name),性別(sex))

declare

primary_id exception;——定義一個異常變量

pragma exception_init(primary_id,-00001);——關聯錯誤號和異常變量名

begin

insert into student values(2,'張三','男');——向student表中插入一條與已有主鍵值重復的記錄,以便引發異常

exception

when primary_id then ——若oracle捕獲到的異常為-00001異常

dbms_output.put_line('主鍵已存在,不允許重復!');——輸出異常描述信息

end;

通過運行結果可以看到,使用異常處理機制可以預防Oracle數據庫系統因為引發異常而導致程序崩潰的作用,它可以讓我們書寫的程序有機會進行自動檢測和修改錯誤。從上面的例子可以看出自定義異常比較容易理解和記憶,也方便數據庫人員使用。

(二)業務邏輯異常

在數據庫的實際開發過程中,數據庫開發人員有時會根據開發對象的業務邏輯情況自己定義一個異常,通過這種方法來提醒數據庫開發人員操作違反業務邏輯規則,從而引發自己定義的異常,中斷程序的運行來進行自定義異常的處理。業務邏輯異常首先是需要在DECLARE進行聲明一個異常變量;然后在BEGIN過程中先給出需要的業務邏輯規則再執行RAISE語句;最后在EXCEPTION中進行編寫對異常進行處理的程序語句。下面我們通過一個實例來看看如何定義和引發業務邏輯異常:

declare

null_exception exception;——聲明一個異常變量

S student %rowtype;

begin

S.id:=3;——ID是主鍵進行賦值,

insert into student values(S.id,S.name,S.sex);——向student表中插入一條記錄

if S.name is null then ——判斷表的name的值是否為空

raise null_exception;——引發異常,進行異常處理

end if;

exception

when null_exception then

dbms_output.put_line('name不可以為空');——當引發異常時,輸出異常信息

rollback;

end;

通過運行結果可以看到,業務邏輯異常定義成功。程序就可以進行檢測我們向數據庫表單STUDENT中插入數據時是否存在學生NAME為空的情況了。

總的來看,在一段沒有語法錯誤的程序代碼中,因為出現了不太“合格”數據而導致程序無法運行。我們希望提高自己的代碼質量,使得我們的程序更加健壯,我們對程序做了異常處理。從上面的異常處理過程中,我們可以看出:對于預定義異常和錯誤編號異常是由我們Oracle數據庫系統判斷的,但是對于業務邏輯異常,我們Oracle數據庫系統本身就無法知道了,通常我們是通過一個引發異常的機制(RAISE語句)來完成,從而可以實現對業務邏輯規則的判斷。

[1]劉竹林.數據庫設計與Oracle數據庫應用教程.清華大學出版社,北京大學出版,2009.

[2]張曉林,吳斌,晁陽.Oracle數據庫開發基礎教程.清華大學出版社,2009.

[3]趙宇蘭.Oracle數據庫應用技術.合肥工業大學出版社,2014.

TP

A

1006-0049-(2017)17-0187-01

猜你喜歡
定義程序數據庫
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
數據庫
財經(2016年6期)2016-02-24 07:41:51
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
主站蜘蛛池模板: 玖玖精品在线| 久久先锋资源| 呦视频在线一区二区三区| 亚洲一级毛片在线播放| 欧美激情视频二区三区| 制服丝袜一区| 精品久久高清| 国产精品亚洲专区一区| 日本免费一级视频| 四虎永久在线精品国产免费| 亚洲国模精品一区| 一级黄色片网| 欧美日韩精品一区二区视频| 99在线免费播放| 九九久久精品免费观看| 人妻丰满熟妇αv无码| 日韩成人高清无码| 国产尤物视频网址导航| 国产91无码福利在线| 无码国内精品人妻少妇蜜桃视频| 在线亚洲小视频| 亚洲无线视频| 99久久国产综合精品2020| 亚洲欧美激情小说另类| 性喷潮久久久久久久久| 日本一区二区不卡视频| 国内嫩模私拍精品视频| 国产91全国探花系列在线播放| 毛片卡一卡二| 无码有码中文字幕| 国产香蕉在线视频| 一级高清毛片免费a级高清毛片| 男女性午夜福利网站| 91网红精品在线观看| 国产欧美日韩在线一区| 一级成人a做片免费| 精品视频福利| 国产一级片网址| 一级香蕉人体视频| 婷婷伊人久久| 91亚瑟视频| 亚洲精品无码在线播放网站| 九九视频在线免费观看| 国产爽妇精品| 日韩在线永久免费播放| 日本午夜影院| 好紧好深好大乳无码中文字幕| 日本道综合一本久久久88| 亚洲高清国产拍精品26u| a级毛片在线免费| 久久黄色免费电影| 久久黄色影院| 国产亚洲精品97AA片在线播放| 国产亚洲高清在线精品99| 免费高清毛片| 国产天天色| 国产精品亚洲αv天堂无码| 精品欧美视频| 亚洲国产成熟视频在线多多| 婷婷六月在线| 久草视频中文| 成人午夜天| 亚洲中文字幕23页在线| 国产乱人乱偷精品视频a人人澡| 国产又黄又硬又粗| 为你提供最新久久精品久久综合| 国产精品成| 熟妇无码人妻| 亚洲欧美另类日本| 国产成人亚洲无码淙合青草| 亚洲色中色| 91精品啪在线观看国产91| 狠狠做深爱婷婷综合一区| 在线亚洲小视频| 91福利免费| 国产精品无码AV片在线观看播放| 中国国产A一级毛片| 色婷婷天天综合在线| 影音先锋丝袜制服| 一本一本大道香蕉久在线播放| 成人午夜免费视频| 久久综合色播五月男人的天堂|