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
主站蜘蛛池模板: 亚洲国产成人精品一二区| 国产成人精品日本亚洲| 久久亚洲天堂| 2024av在线无码中文最新| 成人午夜天| 亚洲天堂2014| 伊人国产无码高清视频| 亚洲最猛黑人xxxx黑人猛交| 免费在线看黄网址| 亚洲国产精品一区二区第一页免 | 就去吻亚洲精品国产欧美| 91人人妻人人做人人爽男同| 欧美综合区自拍亚洲综合绿色| 无码中字出轨中文人妻中文中| 色精品视频| 香港一级毛片免费看| 99热这里只有免费国产精品| 日本高清免费不卡视频| 国产真实乱人视频| 国产96在线 | 亚洲免费播放| 久久一本日韩精品中文字幕屁孩| 亚国产欧美在线人成| 亚洲精品国产综合99久久夜夜嗨| 久久亚洲国产一区二区| 日韩区欧美国产区在线观看| 视频二区欧美| 国产精品分类视频分类一区| 欧美日本视频在线观看| 色婷婷久久| 国产9191精品免费观看| 中文字幕欧美日韩| 成人毛片免费在线观看| 成人国产精品2021| 亚洲永久精品ww47国产| 农村乱人伦一区二区| 国产成年女人特黄特色毛片免| 亚洲精品少妇熟女| 亚洲一区二区无码视频| 日本亚洲成高清一区二区三区| 午夜激情婷婷| 67194亚洲无码| 一区二区三区精品视频在线观看| 激情無極限的亚洲一区免费| 中文字幕欧美日韩高清| 日本精品视频一区二区 | 亚洲精品在线观看91| 一级全免费视频播放| 中文字幕在线播放不卡| 欧美精品v欧洲精品| 97se亚洲综合不卡| 91福利在线看| 国产精品毛片一区| 喷潮白浆直流在线播放| 2021天堂在线亚洲精品专区 | 五月婷婷亚洲综合| 色天天综合| 亚洲自偷自拍另类小说| AV无码无在线观看免费| 色妞www精品视频一级下载| 精品国产美女福到在线直播| 香蕉视频在线观看www| 国产精品永久久久久| 在线观看精品国产入口| 2021国产在线视频| 999国内精品视频免费| 国产特级毛片| 三区在线视频| 国产欧美网站| 男女性色大片免费网站| 一级香蕉人体视频| 中文字幕免费视频| 色综合久久88| 久久综合九色综合97婷婷| 国产成人精品一区二区免费看京| 亚洲三级a| 欧美一区福利| 国产激爽爽爽大片在线观看| 国产精品不卡片视频免费观看| 亚洲欧洲美色一区二区三区| 日韩精品亚洲一区中文字幕| 国产激情第一页|