Oracle-存储过程exceion异常处理大全及实例经典最终_第1页
Oracle-存储过程exceion异常处理大全及实例经典最终_第2页
Oracle-存储过程exceion异常处理大全及实例经典最终_第3页
Oracle-存储过程exceion异常处理大全及实例经典最终_第4页
Oracle-存储过程exceion异常处理大全及实例经典最终_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1一个实例Commit;createorreplaceprocedurePROC_SUNHONGBO_MONCHNL(timvarchar2)istimestvarchar(8);timdayvarchar(33);sqlsqlvarchar(6666);no_resultEXCEPTION;beginCommit;日se蝴le粒ct码t像o_砖ch质ar撇(s吗ys洒da应te星,'弄yy溉yy塑mm财dd仇HH将24列mi岩ss甘')翠t望im繁a竹in棵to签t培im哀da贺y扫fr堤om羡d笛ua耳l;危se短le滥ct迈缠to朝_c男ha程r(粮ad居d_纯mo贼nt油hs逐(s缸ys旺da胖te沉,-颜1)曾,'沃yy鼻yy脚mm奇')统m煤on肾i挨nt遣o典ti吴me固st缎f猜ro码m拨du歪al膜;惕se愉le礼ct询t混im翼碧mo户n稻i鹿nt切o轰t吧im刘es辆t虑f嫂ro顾m恒d炉ua驴l;臂ex肃ec慰ut敞e您im伙me雁di构at祸e端'd控el饮et体e伟re怜po硬rt屠.w家o_梢su始nh妹on蹄gb谜o_歌ch拾nl届w赢he埋re假设m正on砖=惩'风||助ti者m;肺Co搅mm钢it伤;茎/*撞1浙、添常加所猴需要椒的列蹦r纷ea前l_有ch揉ar戴ge似+板t匀im叔e婚,如风果有绝就抛响出异叮常后约继续集执行逗**蜘**你**贼**委**洁/赛BE役GI避N生ex烟e免cu总te饿i扫mm哪ed权ia倦te赤'犯al鉴te输r熔ta抗bl珍e释sh欣iy抛w1鹊1.资t_银my冰a猴dd叼r酸ea赵l_稿ch加ar劫ge搬'|陷|t猫im零||控'林va廉rc锋ha房r2劫(6迎6)弊';勇EX列CE脊PT遇IO身N气小W宜HE应N芬no丘_r伍es吵ul历t远TH兽EN圈彻旱真予DB的MS般_O迷UT姥PU盈T.弟PU拢T_胃LI缴NE罢('疼你的换数据墓更新蠢语句悼失败皮了相!'藏);扒缓W变HE芝N漏OT射HE窝RS象T虾HE盒N乓井衰毫DB您MS景_O屈UT味PU粱T.蚊PU骆T_啊LI菜NE淋('腹你的近数据象更新醋语句保!劝已经漂存在近该列构1济:筛'|穿|t轿im丝);席EN两D;剪ex蹈ec孟ut辆e礼im表me滥di申at禽e喇'u械pd圈at趟e悲sh班iy杯w1疑1.外t_愤my批s壤et驴r清ea姿l_巩ch辽ar沟ge翼'|盖|t门im萌||奸'注=页nu抚ll独';文Co菜mm搬it烈;环Co起mm楼it绣;暂db虽ms乔_o界ut颤pu削t.帐pu从t_吓li易ne炒('盐ti谜me印st录:'丈||薪ti们me悔st讲||痰';须ti救m:兴'|话|t撕im尾||妙';队ti关me录st竟:'泪||订sq慎ls杜ql暂);虾Co奔mm宝it断;雨en虽d纪PR钞OC伏_S污UN伍HO浅NG拥BO化_M扫ON庙CH公NL厌;/层Co锋mm鹅it惠;气主要末内容茎如下滋:察1.横1

羡异常文处理义概念租1.环1.期1

网预定犁义的抓异常互处理如1.嚼1.吵2

甜非预燕定义支的异踏常处慨理懒1谈.和1.匠3

饼用户役自定堪义的舅异常墨处理仪1.补1.矿4

乎用户怕定义凡的异恭常处赴理小1.尝2

寨异常例错误金传播哥1.校2.溉1

棵在执善行部追分引碗发异腹常错崇误容1.锁2.春2

统在声汽明部芒分引旦发异赖常错析误阴1.阿3

异异常唯错误凑处理诱编程嫌1.义4

退

陪在翼

摇PL虫/S简QL觉

狼中使兼用侧

为SQ错LC钟OD何E,舰

S碎QL射ER能RM掉异常蜻处理淘函数殊即使页是写拌得最腥好的包PL券/S喉QL味程序纵也会悬遇到被错误辣或未稿预料晕到的跳事件钥。一灵个优鹅秀的单程序营都应宾该能谦够正着确处喊理各始种出爆错情赤况,映并尽腥可能艺从错乡误中蝴恢复纵。任挠何O先RA馆CL速E闹错误碰〔报宪告为脾OR家A-肃xx凳xx箭x肚形式解的擦Or棚ac恋le暗错误膨号〕逼、恢PL桃/S婆QL碍运行蔽错误牢或用毅户定骡义条途件〔己不一凑写是烧错误脂〕,约都可鼓以。核当然宴了,托PL各/S确QL守编译村错误吨不能原通过圆PL崇/S停QL篇异常伤处理主来处障理,屠因为冤这些哥错误弯发生初在盖PL饰/S唯QL逝程序润执行馆之前户。粮OR筋AC屑LE染

犁提供环异常宏情况货(E蚂XC除EP携TI包ON闪)心和异迈常处臣理魔(E恐XC纤EP向TI窝ON慈

H趋AN驳DL添ER骗)蝴来实童现错苍误处光理。

牵1度.1吹

唉异常尝处理津概念远异常垃情况旷处理惜(E摸XC院EP露TI齐ON糕)筑是用殖来处闲理正宗常执悠行过沉程中果未预海料的纪事件班,朗程序咽块的幸异常眠处理营预定阿义的士错误醋和自病定义形错误夺,旅由于浑PL肆/S请QL化程序应块一劫旦产雁生异仍常而低没有屑指出昌如何麻处理皇时鬼,斥程序示就会湿自动班终止混整个挪程序肆运行损.

浓有三纺种类形型的午异常秩错误鼓:臂

匠1.慌

预检定义千

跨(

沾Pr溜ed锋ef殖in书ed锡

)僚错误蒜

鞭OR际AC损LE截预定燃义的秋异常尚情况慌大约呢有集24刺个。嚼对这炼种异丹常情途况的母处理迎,无挪需在姨程序吗中定放义,疾由历OR竹AC粪LE婆自动栽将其困引发抵。摘

沉2.胞

非乓预定迫义

怀(

介Pr贿ed简ef茎in侧ed称

)尸错误倡

来即万其他乡标准杜的赛OR布AC寨LE而错误宫。对益这种欲异常获情况酷的处搭理,灭需要廉用户贱在程胸序中方定义掌,然富后由舟OR踪AC员LE怀自动途将其咐引发求。惩

萌3.少

用方户定灶义弟(U倦se但r_挎de昆fi厉ne纱)

并错误剧

程社序执皱行过吐程中筋,出故现编过程人勇员认渠为的氧非正抗常情僚况。橡对这芦种异引常情掏况的沙处理证,需敬要用慢户在站程序森中定挽义,柱然后阀显式慰地在圈程序闸中将睁其引拍发。

枝异常膝处理宴局部宝一般线放在送

钳PL伤/S笛QL冈

鸡程序道体的丽后半寄部寺,靠结构瑞为积:

株EX与CE去PT堡IO辆N

W购HE慧N

去fi锤rs千t_丑ex蔬ce股pt悉io赌n

通TH盒EN暖

水<c睛od扇e

忠to易

h身an等dl于e

修fi位rs技t

紫ex栽ce附pt牵io架n

丰>

W痰HE眉N

向se粱co于nd刚_e喂xc悲ep遍ti幸on券

T学HE招N

<枪co罩de欠

t绘o

付ha色nd碧le小

s失ec洁on絮d

甘ex瓦ce毯pt骗io辉n

犁>

W工HE办N

技OT榜HE裳RS芽

T某HE洗N

<储co丘de尤

t民o

这ha猴nd征le竹

o估th肚er吊s

热ex抚ce震pt绵io号n

腔>

花EN晓D;

姻异常洞处理企可以绢按任机意次牙序排杯列悲,括但首

友OT拌HE慎RS那么

圣必须穿放在提最后捡.劣1.墙1.绘1

吨预定弯义的杀异常初处理

穴预咸定义泛说明家的部完分

觉OR绝AC盛LE砍

厌异常拔错误错误号异常错误信息名称说明ORA-0001Dup_val_on_index违反了唯一性限制ORA-0051Timeout-on-resource在等待资源时发生超时ORA-0061Transaction-backed-out由于发生死锁事务被撤消ORA-1001Invalid-CURSOR试图使用一个无效的游标ORA-1012Not-logged-on没有连接到ORACLEORA-1017Login-denied无效的用户名/口令ORA-1403No_data_foundSELECT

INTO没有找到数据ORA-1422Too_many_rowsSELECT

INTO

返回多行ORA-1476Zero-divide试图被零除ORA-1722Invalid-NUMBER转换一个数字失败ORA-6500Storage-error内存不够引发的内部错误ORA-6501Program-error内部错误ORA-6502Value-error转换或截断错误ORA-6504Rowtype-mismatch宿主游标变量与

PL/SQL变量有不兼容行类型ORA-6511CURSOR-already-OPEN试图翻开一个已处于翻开状态的游标ORA-6530Access-INTO-null试图为null

对象的属性赋值ORA-6531Collection-is-null试图将Exists

以外的集合(

collection)方法应用于一个null

pl/sql

表上或varray上ORA-6532Subscript-outside-limit对嵌套或varray索引得引用超出声明范围以外ORA-6533Subscript-beyond-count对嵌套或varray

索引得引用大于集合中元素的个数.涝

课对这淋种异娘常情信况的滩处理膝,只其需在献PL揪/S湿QL薄块的留异常形处理抬局部去,直溉接引搁用相你应的合异常熊情况墓名,丽并对聚其完毫成相仙应的艳异常剃错误需处理双即可艇。

况例变1屠:峰更新粮指定炎员工泳工资街,如壤工资笼小于轿15讨00哑,那么滩加融10穗0埋;

赞DE厦CL族AR捏E

v象_e系mp挪no尽

e仆mp酒lo网ye笑es灰.e浅mp晴lo匹ye伤e_白id咳%T贩YP昌E

筛:=婶

&次em钥pn振o;

v谨_s慢al雪

e杀mp晕lo嘴ye启es猜.s亩al壶ar横y%召TY浴PE争;

蛋BE访GI崖N

S棚EL镇EC慌T

颗sa武la早ry胁

I崇NT碑O

离v_隶sa妨l

花FR骆OM缓

e攻mp泳lo垄ye招es辰

W陶HE莲RE赢

e魔mp亡lo践ye勉e_渔id叛

=航

v街_e撇mp照no裁;

I传F

民v_源sa复l<愉=1烤50盟0

悠TH言EN夏

贪UP门DA倦TE镜

e片mp盾lo甜ye攀es切

S址ET效

s芬al忠ar粗y

固=

爽sa塑la默ry州

+员

1榨00晴

W咐HE增RE批

e犁mp由lo常ye镰e_今id么=v屿_e醒mp筹no制;

慎DB下MS布_O福UT但PU括T.勾PU岩T_踪LI录NE邻('脊编码续为'裁||版v_核em惕pn农o|杠|'情员工裂工资沾已更敏新!扔')漂;

E副LS辜E

臭DB俊MS语_O孩UT次PU箭T.待PU看T_详LI允NE戴('贴编码材为'财||钳v_末em镇pn挨o|忍|'贱员工献工资航已经恐超过荐规定稀值!躬')之;

E裕ND苦

I倦F;

男EX与CE途PT设IO筋N

W订HE饭N

妥NO码_D羞AT肥A_灿FO野UN评D

速TH虫EN息

篇DB串MS梯_O呼UT睁PU辫T.女PU敬T_隐LI琴NE野('例数据搜库中漫没有诵编码尽为'扶||桂v_跪em厘pn竖o|腔|'暗的员条工'鹅);

W互HE拳N

寿TO钱O_水MA攀NY习_R熊OW多S

服TH木EN

渔DB斥MS孝_O酿UT阴PU喝T.拣PU坡T_李LI虎NE克('枝程序回运行寸错误辟!请屈使用叼游标肤')项;

W养HE魂N

壁OT舱HE盐RS捉

T秀HE照N

技DB秧MS显_O猫UT灵PU固T.导PU瞎T_汽LI栽NE伞(S引QL翅CO宴DE珠||础'-妇--风'|焦|S哥QL诵ER慈RM压);

孝EN腊D;度

义1.壳1洒.得2

脂非预忆定义慈的异抗常处续理

矿对于窝这类岔异常距情况累的处漠理,月首先闸必须孩对非耐定义捕的俗OR聋AC矛LE贴错误轻进行情定义译。步咏骤如魔下:饱1.罢

在掉PL向/S器QL伴

督块的得定义肥局部栽定义北异常汤情况含:

技<异犬常情呈况>智

袭EX慈CE捧PT海IO轨N;

低2.优

将蓬其定简义好枝的异鸽常情搏况,笑与标渐准的呼OR猜AC灶LE稍错误混联系置起来萌,使荒用颗EX态CE魔PT危IO鸣N_弦IN拆IT兆语句丙:蔽PR苏AG助MA胸

E佛XC票EP呢TI僻ON呀_I叠NI对T(尺<异责常情晒况>要,

山<错税误代孝码>享);

洗3.葱

在葬PL冬/S近QL砖

忘块的竟异常钞情况名处理途局部末对异或常情合况做店出相裤应的饲处理急。

润例白2用:逗删除榨指定采部门庙的记哈录信的息,梢以确据保该耗部门仪没有覆员工聚。

骂IN蛛SE降RT浩

I子NT镜O

罢de红pa姓rt赌me浸nt户s

诸VA笑LU目ES熟(狸50任,

父'F尽IN觉AN桃CE膜',盐

'辰CH波IC弦AG电O'叶);

铜DE缴CL转AR舟E

v姿_d贷ep蒸tn既o

贝de弯pa青rt越me徒nt背s.沫de意pa齿rt烟me江nt自_i此d%域TY缓PE视

:厅=

拖&d蜘ep蚀tn班o;

d疮ep导tn妹o_地re威ma结in颜in猎g

年EX喷CE改PT脚IO介N;

P吩RA复GM惨A

篮EX帮CE戏PT晒IO叠N_沸IN眨IT翁(d娃ep狠tn吹o_烟re烫ma魂in绳in绕g,岛

-征22暖92躺);

/厨*

肆-2惠29厉2

孩是违先反一界致性颠约束恰的错捎误代捐码

肌*/

房BE握GI堵N

D迟EL禾ET倚E

织FR谋OM恶

d滴ep雷ar塌tm错en施ts裹

W回HE艇RE去

d蜻ep京ar扶tm锦en饰t_响id圈

=绘

v吨_d霜ep返tn港o;

逗EX叛CE眼PT部IO田N

W梅HE比N

旦de余pt嚷no痕_r刘em姻ai皂ni移ng斜

T蝴HE铺N

老DB房MS绵_O霸UT汁PU耀T.寺PU救T_爽LI惯NE现('纠违反刷数据幼完整顿性约吨束!遥')影;

W俱HE哀N

爹OT羞HE狗RS校

T蛇HE域N

因DB野MS聪_O腊UT还PU抬T.印PU峡T_弊LI住NE戚(S椒QL舱CO往DE赶||至'-融--府'|课|S旅QL脾ER孩RM碌);

拳EN撒D;箩1.捞1.讨3

茧用户乒自定茄义的排异常承处理克当与会一个赞异常站错误捏相关印的错孩误出忠现时粮,就刷会隐爱含触霞发该灶异常驾错误呀。用议户定婚义的躲异常产错误基是通狱过显幕式使次用

寸RA圈IS怨E

圣语句汁来触机发。早当引桥发一享个异挥常错贵误时跳,控判制就产转向菌到尼

其EX膊CE城PT洁IO芦N服块异糠常错抽误部揉分,闭执行梦错误塑处理会代码哪。

锅对于悦这类且异常珠情况寄的处桂理,付步骤蚁如下们:农1.拼

在手PL丙/S豪QL坊

吸块的坚决义膜局部恳定义欠异常贫情况况:

节<异赛常情马况>眉

博EX串CE伤PT越IO歪N;

窃2.口

R妖AI白SE扶

<详异常胸情况丸>不;

顶3.卫

在满PL椅/S过QL福

唱块的非异常播情况纷处理线局部声对异侦常情吴况做跃出相界应的喜处理全。

车例胜3化:牛更新昂指定进员工碍工资疲,增首加喷10盾0录;

哨DE拴CL爪AR告E

v辨_e守mp拍no倡

e温mp坟lo陡ye铺es填.e步mp亡lo偿ye信e_蹈id胀%T饭YP漆E

刺:=斗&e凯mp锁no稀;

n暮o_后re油su纸lt恐

回EX穴CE稼PT倒IO泛N;

济BE快GI浊N

U金PD赤AT庆E

艺em吩pl肺oy末ee筒s

愿SE但T

次sa轿la屿ry贡

=谎

s恭al将ar蚂y+塌10邻0

鞭WH晕ER超E

懒em遣pl矩oy放ee椒_i青d

嫁=

料v_药em浇pn怎o;

I肤F

披SQ什L%症NO米TF乓OU个ND旦

T绕HE历N

哭RA括IS熄E

螺no充_r烘es酒ul柜t;

E快ND专

I串F;

薄EX膀CE枕PT粘IO躬N

W传HE妄N

镇no宜_r窝es巷ul效t

针TH汇EN神

互DB泛MS愤_O藏UT尽PU竹T.两PU絮T_饭LI盏NE沃('栋你的思数据浆更新喊语句伴失败羊了!讨')但;

W绍HE腰N

序OT蜻HE闯RS板

T稠HE俗N

婆DB追MS矮_O博UT设PU施T.粥PU锦T_托LI鸣NE唇(S左QL步CO枕DE云||逼'-养--窑'|移|S预QL督ER总RM稳);

模EN心D;摸1.侍1.找4

蚊用吗户定烦义的贸异常撞处理

规调用拉DB池MS粪_S团TA交ND妨AR丽D(律OR组AC汪LE末提供缝的包飞)廉包所票定义驻的离RA陡IS波E_赶AP肆PL映IC持AT弱IO种N_诊ER蛛RO苍R饺过程焰,可侍以重砖新定补义异英常错池误消绩息,援它为诊应用赖程序撤提供源了一逼种与垦OR慎AC私LE崇交互傲的方幸法。

浑RA其IS端E_龙AP砍PL株IC扮AT庭IO类N_舰ER塘RO金R

拢的语邪法如搏下:

博RA嫁IS振E_明AP艇PL虽IC黄AT侮IO牧N_布ER挽RO何R(李er狂ro符r_染nu屿mb别er裕,e妻rr幼or秋_m翼es久sa闸ge另,[净ke胀ep环_e灾rr书or枕s]烫

)奉;

舞这里辫的维er废ro旦r_佛nu租mb育er锹

扰是从剪

龄–2闸0,互00皱0

疏到糖

杠–2粒0,殃99土9

互之间地的参牲数,处

挎er猎ro况r_土me洪ss吩ag浊e

纠是相芒应的齿提示蒜信息别(<鸽

2只04城8

仅字节皂)酷,贝

蛇ke虽ep奋_e久rr燥or臭s

搭为可耍选,投如果确ke龟ep牺_e流rr衣or跟s

笛=T翅RU诵E

互,扛那么新占错误痒将被帖添加碰到已锈经引叼发的鱼错误门列表吸中。劲如果既ke法ep漆_e颜rr番or揭s=汤FA写LS灰E(猜缺省仪),惑那么新律错误补将替众换当织前的缺错误旋列表奥。

港例丙4搭:给创立悟一个跃函数葱ge化t_扎sa锦la施ry遇,

用该函超数检男索指掉定部四门的绪工资页总和坡,其纹中定剖义了触-2削09亭91哥和梯-2薯09累92揪号错膏误,忌分别舱处理差参数转为空销和非蕉法部区门代腰码两抱种错卧误:

猴CR底EA改TE池

T讲AB边LE阅

e初rr左lo道g(

渐Er绸rc探od宅e

史NU吓MB赞ER抵,

饿

覆Er抄rt以ex避t

毒CH铺AR翼(4阶0)袖);

睡CR乖EA耳TE揪

O劣R

娘RE逆PL岗AC没E

把FU倚NC金TI溉ON焦

g宫et纳_s青al数ar应y(秀p_球de赠pt浑no陶

N强UM抄BE信R)

锹RE姥TU星RN宝

N凑UM支BE厌R

腰AS

明v_办sa害l

毅NU挣MB绵ER吉;

急BE躁GI蚂N

笛IF擦

p津_d境ep坟tn盘o

块IS跌

N绵UL剪L

咳TH尊EN

嘴RA弓IS泡E_旋AP秘PL蒸IC爪AT活IO迷N_隙ER芬RO矛R(才-2咽09虹91旋,

库’部乒门代预码为女空’光);

振EL稠SI先F

妻p_催de壮pt弦no源<0约

T泛HE联N

坚RA蓝IS紫E_丢AP伟PL报IC幕AT矮IO让N_遇ER侧RO节R(辽-2器09汤92凉,

职’无丝效的恭部门秧代码溪’)利;

剃EL堤SE

饲SE泳LE题CT艺

S怎UM石(e套mp茫lo舞ye愿es强.s最al桌ar屠y)遗

I猴NT肉O

授v_圣sa群l

垫FR焦OM纲

e伐mp驴lo坐ye斤es疫

铜WH露ER樱E

番em债pl堆oy膏ee鞋s.巴de汗pa也rt详me万nt槽_i嫂d=练p_隔de烫pt详no鞋;

堤RE懂TU白RN勺

v乎_s鼠al嘴;

何EN特D

愚IF馒;

鉴EN营D;

劫DE拴CL怜AR坟E

级V_僚sa愁la歇ry浓

N童UM炊BE凶R(汽7,集2)际;

顽V_笨sq桐lc营od庄e

役NU巨MB誉ER啄;

霜V_本sq腾le蝶rr温

V旺AR新CH做AR诸2(稻51费2)哀;

装Nu砖ll团_d易ep片tn嚼o

轿EX芝CE洋PT取IO泉N;

款In却va逗li凳d_必de侧pt搜no宋

E薄XC密EP轰TI王ON韵;

闸PR凉AG怪MA尚

E留XC狸EP净TI品ON智_I冶NI扣T(侧nu沫ll娘_d魔ep场tn粘o,衬-2境09摸91常);

济PR厌AG飞MA逐

E闭XC慕EP吵TI高ON混_I坐NI凑T(垫in屑va烈li针d_言de梁pt怜no掀,

背-2辩09扫92卡);

共BE毅GI震N

坟V_昏sa他la沈ry拿

:武=g右et求_s谁al胳ar所y(从10号);

裂DB河MS阳_O信UT供PU脆T.约PU垄T_臣LI狮NE妈('蚂10飞号部就门工插资:蜓'

烘||醒

T苍O_嚼CH阳AR孤(V那么_s耐al村ar集y)迟);

晓BE河GI估N

贴V_锋sa韵la跪ry揉

:寨=g妄et买_s衬al筋ar里y(密-1幕0)在;

切EX谷CE见PT疾IO宾N

虑WH改EN龙

i饮nv驴al剩id沿_d琴ep撒tn谎o

瞎TH枕EN

甘V_掏sq敌lc遥od县e

逢:=无SQ荣LC恼OD胞E;

寿

岭V_虏sq广le盐rr追

座:=个SQ票LE撒RR树M;

丹IN愧SE救RT灾

I物NT位O

峡er来rl狼og胁(e浙rr杏co情de左,

钳er三rt马ex鹿t)酬

棍VA茶LU吵ES啄(v怕_s控ql仍co雪de平,

位v_执sq蹦le眯rr脏);

爆CO翻MM双IT刘;

耐EN街D

扶in丹ne梳r1断;

派V_筋sa那la持ry祸

:点=g刚et摄_s租al何ar虾y(局20剩);

对DB文MS墨_O老UT阿PU断T.袖PU肚T_堵LI卡NE启('振部门财号为唤20饥的工抽资为弱:'向||奔TO独_C鸭HA往R(争V_樱sa就la瘦ry迅))把;

难BE世GI昌N

去V_愿sa烂la盘ry蒸

:叫=g乓et匠_s那al和ar兔y(框NU炊LL欧);

芒EN端D

诱in涌ne垒r2模;

融V_卸sa强la向ry装

:腊=

浅ge暗t_挣sa教la肉ry浸(3鞋0)庆;

铁DB铜MS士_O古UT哀PU统T.因PU挎T_陵LI冬NE井('月部门磁号为眉30弯的工化资为滥:'分||飞TO外_C篮HA茂R(损V_四sa花la酒ry蛋))迹;

乱EX侵CE垂PT场IO分N

聋WH柳EN僵

n观ul术l_牵de冰pt率no聚

T丹HE心N

油V_优sq抹lc阿od秋e

用:=期SQ辅LC总OD蚂E;

殿

编V_惰sq旗le冬rr篮

米:=蚂SQ勇LE鸡RR驰M;

陕IN到SE确RT祸

I西NT差O

商er竟rl穴og画(e际rr把co云de展,

突er秀rt塔ex兆t)津

V眨AL熄UE哭S(禾v_堂sq销lc宇od乓e,辆

v岗_s急ql侮er候r)总;

蝶CO评MM烦IT阿;

茫WH箩EN病

O谨TH似ER枣S

决TH鹅EN

D论BM课S_淡OU风TP落UT痛.P驾UT莲_L垒IN希E(察SQ权LC字OD亡E|船|'正--索-'暖||种SQ炒LE舞RR暑M)敢;

甚EN摇D

潮ou鞠te协r;

蛛例5津:定帅义触支发器彼,使螺用R杰AI兆SE尖_A吵PP启LI梁CA谦TI哭ON骂_E拌RR跟OR仪阻止沈没有巴员工广姓名半的新杀员式诱记录灭插入左:

撞CR饰EA龙TE浪

O况R

酿RE怨PL哨AC框E

谈TR咏IG低GE坏R

理tr梯_i家ns拒er令t_建em铺p

果BE缓FO衔RE薄

I赵NS加ER腰T

擦ON吵

e缘mp日lo凳ye侵es

改FO跃R

迷EA秀CH浇

R帅OW

连BE迅GI瞧N

姓IF盖

:亦ne努w.勉fi芬rs除t_峰na既me驰

I剧S

认NU浪LL磁

O假设R

忙:n国ew伏.l距as栗t_麦na外me饥

i垮s

迹nu守ll赚

T拒HE集N

贵RA泼IS叙E_剖AP际PL脏IC临AT氏IO萄N_慌ER丑RO在R(反-2嫩00街00塑,'草Em临pl到oy假ee碰

m剧us盲t

再ha本ve币

a锐

n欺am垒e.愿')昏;

捷EN吩D

称IF跪;

院EN委D;谋1.饼2

你异常众错误祸传播惑

薯由于尝异常粉错误妥可以败在声桂明部坚分和仗执行历局部粪以及毙异常押错误避局部傍出现昏,因狸而在期不同野局部趁引发鹿的异设常错倘误也助不一阿样。

荡1畅.2柏.1恭

优在执高行部晓分引溜发异取常错煤误骆

板当一启个异包常错巩误在劈执行锄局部躺引发烈时,送有下刃列情以况:潜l

的如果歼当前蒸块对炉该异悦常错密误设比置了盟处理货,那么雹执行鞋它并昂成功烤完成搜该块涌的执贴行,回然后球控制膜转给袜包含酸块。刮l

滴如果膏没有索对当斜前块挽异常家错误泽设置掩定义爽处理薪器,始那么通虽过在晚包含辣块中激引发趋它来诞传播革异常宣错误鉴。然斩后对通该包威含块闹执行糟步骤犁1)术。扎

惭1著.2址.2轿

槽在声灯明部歼分引星发异遥常错城误适

屯如果框在声产明部蹄分引涛起异线常情磨况,竟即在炼声明策局部役出现成错误泥,那架么该梢错误恨就能愈影响赠到其交它的乏块。犯比方腾在有铃如下荐的俭PL堡/S散QL届程序澡:准DE他CL哗AR胁E

烫na粮me钢

v渴ar鞭ch予ar盏2(愿12珍):释='嫩Er社ic胁Hu姻';

支其它邻语句

姜BE行GI欧N

段其它精语句

刷EX北CE并PT享IO看N

蔽WH伶EN顶

O窝TH片ER磨S

卵TH占EN裙

敏其它撑语句

球EN暂D;

定例足子中奴,由太于圾Ab挺c

站nu竭mb闸er恼(3份)=气’a峰bc液’;幼

诉出错愈,尽筐管在忍EX锣CE瞧PT脉IO腰N脏中说健明了到WH牲EN险

O天TH轨ER哨S

扭TH腐EN厨语句夺,但艰WH冰EN逼

O软TH乞ER市S

细TH弓EN债也不映会被方执行跪。部

倒但是睡如果趁在该由错误决语句醉块的与外部孩有一预个异怀常错筒误,眨那么该草错误淋能被制抓住宗,如乔:

努BE卸GI虑N

淹DE泛CL汇AR晴E

衰na约me些

v明ar通ch怖ar号2(幸12溉):尾='半Er竹ic维Hu愈';

扩其它贝语句

B村EG臣IN

录其它拜语句

E拔XC钳EP归TI较ON

佣WH苗EN到

O楚TH博ER瓜S

旅TH度EN顾

撇其它生语句

劝EN韵D;

闭EX周CE纺PT罪IO塑N

洲WH辅EN投

O挑TH剑ER彩S

谣TH组EN迷

编其它翁语句

咽EN踩D;旋1痕.3正

蛇异常灿错误砍处理疲编程椒

庭在一惯般的亮应用拦处理张中,罗建议梁程序伴人员宋要用煤异常俱处理蜜,因垄为如版果程仆序中例不声宴明任晶何异袖常处血理,从那么在杀程序肉运行滋出错敲时,材程序娱就被蛙终止重,并斧且也鱼不提末示任筛何信骂息。猛下面鞭是使喜用系葛统提适供的塑异常教来编供程的摔例子荣。

秒1指.4睬

匠在易

蔬PL剂/S矛QL检

杆中使疤用拌

淘SQ改LC溜OD喘E,温

S日QL峡ER懂RM私异常榴处理弦函数势

脾由于良OR祖AC煎LE脖

毫的错臭信息习最大变长度警是铜51傲2糟字节邪,为竞了得句到完溜整的框错误异提示誉信息衔,我驻们可旋用似

刷SQ凝LE撇RR芹M伤和喘

扛SU远BS贿TR压

芬函数漆一起扁得到毙错误做提示划信息贸,方述便进架行错炕误,炎特别罪是如盯果W金HE堆N

烧OT育HE坦RS贼异常鲜处理纸器时凤更为杆方便仪。

铅SQ笑LC执OD袜E

返枯回遇低到的竖Or标ac钥le紧错误奸号剂,峰SQ师LE油RR共M

便

返雄回遇师到的丘Or补ac某le梦错误夸信息凳.

羽如破:殖

门SQ炒LC龟OD披E=哑-1咐00脸

è江

S铃QL陆ER采RM跌=’莲no穿_d缺at挑a_俱fo迷un别d

亦‘达

S跌QL夫CO线DE怪=0询

狐è

寇SQ吓LE尤RR右M=急’n坑or倘ma膜l,勺

s究uc缘ce欧ss安fu厉al溪

c洗om牛pl庸et籍io册n’

住例6奴.

驳将煤OR今AC须LE暖错误挤代码施及其垃信息家存入胁错误础代码着表

奸CR猎EA晴TE董

T邮AB记LE穴

e剩rr公or陡s

怖(e坊rr忌nu膊m

虑NU辆MB建ER隆(4奉),覆

e兆rr箭ms占g

午VA皮RC箩HA鹿R2慨(1武00弦))柏;

念DE胡CL鸡AR寒E

e项rr桃_m糕sg届

转VA罢RC料HA佣R2呼(1泡00负);

抬BE赶GI检N

/浅*

得长到所掠有

申OR扮AC焰LE们

错炼误信伏息

*收/

F崭OR半

e算rr狂_n纠um捧

I洞N

郊-1底00士

.维.

幼0

苗LO隆OP

北er浪r_孔ms水g

叉:=熊

S锤QL垒ER盈RM佛(e饶rr循_n混um钱);

全IN露SE桶RT仅

I裁NT恐O

况er赴ro邮rs懒

V匪AL效UE揉S(匆er唉r_到nu慎m,何

e钱rr火_m卵sg蜂);

E责ND愈

L每OO稍P;

割EN旅D;

擦DR苦OP随

T写AB携LE线

e做rr依or柜s;

咱例7挂.

缸查询利OR免AC厘LE渴错误槽代码愿;

膨BE蹲GI翻N

I义NS奴ER拍T

扛IN系TO业

e诊mp齿lo毫ye讯es瑞(e粉mp屯lo较ye斤e_贵id皱,

或fi沾rs邻t_困na架me扔,l拘as浮t_现na砍me梢,h萝ir县e_胳da闷te域,d内ep纤ar翼tm蛙en狗t_避id涝)

V嗽AL啦UE思S(厚22律22坐,

给'E朽ri坊c'徐,'冻Hu冬',掩

S扮YS头DA扣TE狠,

但20够);

D流BM筋S_假设OU记TP洋UT楚.P罢UT峰_L携IN僻E(掀'插物入数膀据记握录成危功!挑')舟;

I满NS指ER称T

雅IN捏TO正

e致mp沫lo足ye撞es杯(e冠mp脆lo梯ye蜂e_赚id胳,

叶fi要rs猜t_零na寺me古,l腹as遥t_针na灶me雪,h类ir隐e_麦da末te也,d继ep虎ar械tm告en盖t_笋id抵)

V默AL少UE捡S(体22并22孔,

鄙'胡燕',稳'勇森',每

S灯YS诞DA吹TE邪,

雷20洁);

D疑BM嗓S_护OU燃TP撇UT幅.P筐UT逮_L惨IN韵E(怒'插想入数袋据记蔽录成沈功!佳')远;

颈EX详CE赵PT娱IO脑N

W宇HE赠N

惩OT怎HE训RS挣

T帆HE初N

绵DB轰MS吴_O杯UT理PU航T.痒PU待T_依LI嫌NE薪(S村QL万CO撇DE典||格'-刃--馋'|祥|S练QL交ER剖RM振);

声EN吨D;

拥例8隆.

旅利用呆OR辟AC带LE图错误病代码乔,编锐写异宇常错赌误处碑理代玻码;

坟DE柜CL狮AR厉E

e级mp调no云_r勤em笛ai崇ni径ng迟

E嘉XC籍EP截TI监ON递;

P勒RA芳GM柄A

拣EX提CE书PT密IO阶N_摩IN志IT箱(e洋mp解no呢_r拨em坐ai画ni享ng哲,

瞎-1鲁);

/但*

哗-1华

是泛违反侦唯一励约束派条件跳的错傍误代臂码

箭*/

恶BE朗GI董N

I餐NS件ER香T

壶IN斩TO赠

e设mp突lo速ye灿es两(e拼mp哑lo点ye专e_懂id龟,

触fi更rs馅t_畅na内me聚,l萝as冠t_捎na漆me猪,h奏ir蕉e_积da盾te逼,d零ep斤ar磨tm掌en猾t_采id科)

V抵AL沟UE膜S(归33按33逮,

售'E郊ri洪c'状,'冶Hu如',相

S也YS划DA沃TE单,

馅20临);

D摧BM捆S_向OU姜TP裳UT把.P渠UT知_L幅IN众E(亭'插馒入数筛据记六录成方功!膨')撑;

I蒸NS污ER冤T

纺IN雄TO含

e船mp伤lo爱ye除es及(e当mp茄lo依ye刺e_嫁id木,

悼fi仿rs搞t_意na饰me厚,l樱as狱t_邮na沙me想,h挪ir车e_间da咽te昼,d店ep没ar慕tm右en费t_恳id肥)

V尽AL留UE背S(挡33劝33丧,

榴'胡降',篮'勇校',傻SY接SD触AT屿E,主

2兽0)想;

D势BM刷S_禽OU州TP蚂UT根.P享UT笼_L估IN茅E(土'插柜入数乌据记穿录成厦功!宫')耗;

菠EX凭CE蛇PT熊IO池N

W点HE黎N

死em雄pn下o_旬re沾ma娃in巾in垮g

光TH风EN商

喜DB忘MS汁_O君UT粪PU忆T.登PU脾T_掉LI朱NE条('屿违反宜数据战完整匆性约皆束!显')骄;

W沫HE向N

魔OT岸HE逢RS渣

T兔HE滥N

惰DB裕MS辈_O庄UT仁PU浮T.奋PU怕T_魂LI蚊NE宪(S瞎QL工CO派DE长||肿'-郊--或'|狮|S姿QL终ER冈RM大);

缺EN撞D;

报Or倡ac仁le匪存浩储过塘程异胡常处世理1、异常的优点

如果没有异常,在程序中,应当检查每个命令的成功还是失败,如

BEGIN

SELECT...

--checkfor’nodatafound’error

SELECT...

--checkfor’nodatafound’error

SELECT...

--checkfor’nodatafound’error

这种实现的方法缺点在于错误处理没有与正常处理分开,可读性差,使用异常,可以方便处理错误,而且异常处理程序与正常的事务逻辑分开,提高了可读性,如

BEGIN

SELECT...

SELECT...

SELECT...

...

EXCEPTION

WHENNO_DATA_FOUNDTHEN--catchesall’nodatafound’errors

2、异常的分类

有两种类型的异常,一种为内部异常,一种为用户自定义异常,内部异常是执行期间返回到PL/SQL块的ORACLE错误或由PL/SQL代码的某操作引起的错误,如除数为零或内存溢出的情况。用户自定义异常由开发者显示定义,在PL/SQL块中传递信息以控制对于应用的错误处理。

每当PL/SQL违背了ORACLE原那么或超越了系统依赖的原那么就会隐式的产生内部异常。因为每个ORACLE错误都有一个号码并且在PL/SQL中异常通过名字处理,ORACLE提供了预定义的内部异常。如SELECTINTO语句不返回行时产生的ORACLE异常NO_DATA_FOUND。对于预定义异常,现将最常用的异常列举如下:

exception

oracle

errorsqlcodevaluecondition

no_data_foundora-01403+100selectinto语句没有符合条件的记录返回

too_many_rowsora-01422-1422selectinto语句符合条件的记录有多条返回

dup_val_on_indexora-00001-1对于数据库表中的某一列,该列已经被限制为唯一索引,程序试图存储两个重复的值

value_errorora-06502-6502在转换字符类型,截取或长度受限时,会发生该异常,如一个字符分配给一个变量,而该变量声明的长度比该字符短,就会引发该异常

storage_errorora-06500-6500内存溢出

zero_divideora-01476-1476除数为零

case_not_foundora-06592-6530对于选择case语句,没有与之相匹配的条件,同时,也没有else语句捕获其他的条件

cursor_already_openora-06511-6511程序试图翻开一个已经翻开的游标

timeout_on_resourceora-00051-51系统在等待某一资源,时间超时

如果要处理未命名的内部异常,必须使用OTHERS异常处理器或PRAGMAEXCEPTION_INIT。PRAGMA由编译器控制,或者是对于编译器的注释。PRAGMA在编译时处理,而不是在运行时处理。EXCEPTION_INIT告诉编译器将异常名与ORACLE错误码结合起来,这样可以通过名字引用任意的内部异常,并且可以通过名字为异常编写一适当的异常处理器。

在子程序中使用EXCEPTION_INIT的语法如下:

PRAGMAEXCEPTION_INIT(exception_name,-Oracle_error_number);

在该语法中,异常名是声明的异常,下例是其用法:

DECLARE

deadlock_detectedEXCEPTION;

PRAGMAEXCEPTION_INIT(deadlock_detected,-60);

BEGIN

...--SomeoperationthatcausesanORA-00060error

EXCEPTION

WHENdeadlock_detectedTHEN

--handletheerror

END;

对于用户自定义异常,只能在PL/SQL块中的声明局部声明异常,异常的名字由EXCEPTION关键字引入:

reserved_loanedException

产生异常后,控制传给了子程序的异常局部,将异常转向各自异常控制块,必须在代码中使用如下的结构处理错误:

Exception

Whenexception1then

Sequenceofstatements;

Whenexception2then

Sequenceofstatements;

Whenothersthen

3、异常的抛出

由三种方式抛出异常

1.通过PL/SQL运行时引擎

2.使用RAISE语句

3.调用RAISE_APPLICATION_ERROR存储过程

当数据库或PL/SQL在运行时发生错误时,一个异常被PL/SQL运行时引擎自动抛出。异常也可以通过RAISE语句抛出

RAISE

exception_name;

显式抛出异常是程序员处理声明的异常的习惯用法,但RAISE不限于声明了的异常,它可以抛出任何任何异常。例如,你希望用TIMEOUT_ON_RESOURCE错误检测新的运行时异常处理器,你只需简单的在程序中使用下面的语句:

RAISE

TIMEOUT_ON_RESOUCE;

比方下面一个订单输入的例子,假设当订单小于库存数量,那么抛出异常,并且捕获该异常,处理异常

DECLARE

inventory_too_lowEXCEPTION;

---其他声明语句

BEGIN

IForder_rec.qty>inventory_rec.qtyTHEN

RAISE

inventory_too_low;

ENDIF

EXCEPTION

WHENinventory_too_lowTHEN

order_rec.staus:='backordered';

END;

RAISE_APPLICATION_ERROR内建函数用于抛出一个异常并给异常赋予一个错误号以及错误信息。自定义异常的缺省错误号是+1,缺省信息是User_Defined_Exception。RAISE_APPLICATION_ERROR函数能够在pl/sql程序块的执行局部和异常局部调用,显式抛出带特殊错误号的命名异常。Raise_application_error(error_number,message[,true,false]))

错误号的范围是-20,000到-20,999。错误信息是文本字符串,最多为2048字节。TRUE和FALSE表示是添加(TRUE)进错误堆(ERRORSTACK)还是覆盖(overwrite)错误堆(FALSE)。缺省情况下是FALSE。

如下代码所示:

IFproduct_not_foundTHEN

RAISE_APPLICATION_ERROR(-20213,'Invaldproductcode'TRUE);

ENDIF;

4、异常的处理

PL/SQL程序块的异常局部包含了程序处理错误的代码,当异常被抛出时,一个异常陷阱就自动发生,程序控制离开执行局部转入异常局部,一旦程序进入异常局部就不能再回到同一块的执行局部。下面是异常局部的一般语法:

EXCEPTION

WHENexception_nameTHEN

Codeforhandingexception_name

[WHENanother_exceptionTHEN

糟溜Co答de但f挺or阀h筋an丑di管ng太a融no拐th洞er掉_e轻xc舌ep晓ti曾on泳]

素私[W深HE损N希ot即he膏rs蜻T夕HE摇N

掩徒co拖de旺f恩or卡h勤an惰di盐ng秋a验ny输o菌th瞒er混e选xc郑ep丈ti氧on搏.]饲

液缸

福锅用户紫必须打在独婚立的消WH尊EN熄子串戏中为掠每个惭异常锣设计援异常耐处理假代码浓,W穷HE拐N说OT欧HE拍RS责子串版必须勿放置筐在最茄后面愿作为过缺省雹处理扫器处桶理没圆有显统式处庙理的惠异常卡。当至异常乖发生亦时,肢控制榨转到答异常攀局部助,O粗RA越CL帅E查泽找当洪前异盟常相痕应的昼WH蠢EN纳..签TH菌EN锯语句遮,捕经捉异漆常,升TH渗EN惯之后异的代膜码被看执行烘,如骗果错跟误陷帐阱代泼码只不是退龄出相误应的润嵌套寿块,巾那么秀程序激将继邮续执肠行内墨部块蛾EN倦D后拐面的航语句乐。如技果没吨有找案到相其应的险异常夜陷阱氏,那遮么将捆执行开WH干EN俗O盘TH义ER轮S。佳在异注常部段分W斗HE冲N甩子串亲没有厌数量果限制扰。

贱普EX瞧CE薄PT者IO搂N

阳始WH批EN容i奸nv吵en容to叠ry叮_t公oo剖_l冰ow枕T岸HE点N

背占or每de馒r_如re店c.亮st忆au纳s:盟='挣ba截ck鞭or要de胃re匆d'捡;

悼鸣re罗pl潮en军is仪h_贿in忌ve缺nt腥or埋y(杜in沫ve夜nt耻or余y_纤nb趣r=忍>

史诱in可ve而nt绕or郊y_炉re窑c.销sk陡u,狂mi跌n_海am疗ou分nt埋=>榨or翁de陵r_怜re乳c.卧qt蚁y-龟in炸ve旧nt茫or梨y_颂re别c.厘qt伴y)何;

再货WH射EN拆d亩is鞭co站nt圆in星ue播d_棒it罩em询T烟HE授N

式元--粪co猎de皆f纪or型d柿is伞co饲nt泼in眉ue长d_勺it芳em窑p直ro肉ce抢ss阿in僻g

后顿WH婆EN昂z此er倡o_舒di蛛vi烛de读T赛HE脂N

秒盒--搞co万de喷f宗or界z经er或o_确di歌vi木de到

椅报WH诉EN梁O练TH扁ER咏S库TH冰EN裤

置游--叛co辞de掉f睡or遗a嘱ny纸o毒th溜er禽e束xc姜ep皇ti绿on救

恭桂EN至D;川

星桐

辞艺当异际常抛营出后眠,控铁制无镜条件欣转到剃异常责局部镇,这命就意食味着结控制召不能心回到也异常咽发生遇的位饰置,铅当异李常被锐处理总和解燥决后顷,控气制返音回到着上一毯层执适行部喉分的佣下一卖条语叫句。嚷

粘微BE冷GI谜N

晨今DE夸CL脑AR绿E

将缎ba幅d_均cr担ed备it皱e程xc章ep箩ti额on无;

仍档BE罪GI岭N

堵弦RA袜IS趟E

船ba煤d_昆cr帖ed直it佩;

泻皮--铁发生权异常染,控红制转道向;盐

捐芹EX炒CE戏PT伙IO昨N

持送WH优EN戚b挥ad假设_c圣re灵di京t岭TH渣EN恶

枕研db枝ms仗_o卡ut纪pu详t.咱pu碌t_厉li松ne意('舱ba诚d_贤cr伏ed锤it卵')脸;

急上EN丈D;沿

巴蹈--驶ba匪d_窑cr勤ed亩it江异常慧处理扎后,任控制倍转到米这里猎

标泉EX臣CE笨PT众IO品N

絮桥WH曲EN再O已TH央ER醒S挽TH获EN纯

勤兽

靠料--击控制袄不会壶从b柜ad灰_c酒re斩di愿t异颗常转化到这逮里

驼型

厌柳--携因为水ba侍d_渗cr艘ed订it圾已被浊处理个

慎遥

勉航EN写D;碑

正榴

斗射当异禁常发蔽生时昌,在行块的四内部遭没有指该异慎常处略理器继时,毕控制磁将转嘴到或咬传播羽到上探一层争块的锹异常悔处理尸局部邻。

管栏

瘦鬼BE志GI载N

赏腊DE胳CL售AR数E贤--泽-内笔部块宵开始宪

坏识

泪辨ba垃d_匀cr蹦ed凳it法e加xc目ep诞ti膀on俩;

厨等BE泊GI中N

界逝RA满IS欣E

受ba拦d_孟cr苍ed婚it恳;

只拦

生绞--健发生值异常屑,控崇制转是向;届

陈沫EX冈CE湖PT罩IO贿N

粮孝WH凤EN周Z狗ER辩O_继DI俭VI亦DE忘T延HE辞N千--置不能炒处理脂ba标d_太cr散ed沙it偶e异赠常

病燃db简ms齐_o赏ut叹pu派t.润pu勤t_巴li低ne狐('约di童vi蒜de抄b票y蓄ze敌ro锄e恒rr伸or晒')柔;

腰彻

狭愧EN允D解--腹结束尘内部嚼块

饥分

静唉--代控制窜不能快到达努这里符,因突为异隐常没赴有解满决;吐

摘皆

奖愿--课异常姓局部第

卡教

腥矩EX邻CE桨PT迫IO窜N

使闸WH堡EN晨O忧TH非ER断S拉TH馆EN倒

总仁--差由于称ba慧d_拜cr月ed伐it滤没有鼠解决理,控终制将良转到蛇这里疏

泛带EN硬D;杨

柜蛇

秆假设5、粪异常假设的传钟播

串矩

丑介没有蜓处理吊的异聪常将扯沿检的测异迎常调大用程迷序传哄播到扬外面装,当衡异常下被处距理并展解决堂或到催达程巧序最那外层转传播享停止宫。在眨声明描局部港抛出群的异青常将逆控制此转到衬上一透层的暗异常死局部慎。

较齿

夸决BE斯GI仆N

衰强ex取ec啄ut卫ab室le迎s瓶ta典te尝me福nt榆s

购导BE增GI庙N

保兄to享da那么y现DA效TE例:=帽'S港YA裙DA疮TE库';贤-车-E各RR敞RO膀R

绕客

矿漆BE薯GI款N芹--心内部胶块开会始

饶抗db按ms悠_o涨ut问pu增t.金pu纲t_嘴li眯ne晕('齐th守is坐l验in植e提wi英ll言n类ot鞠e场xe纸cu央te摄')协;

奔罪EX享CE乖PT搞IO榨N

傍络WH本EN狮O般TH沟ER造S胸TH贺EN伐

酷旱

阅府--冒异常弃不会瑞在这件里处致理

摔诵

霞轧EN宋D;蝶--厕内部缩块结赏束

耻漆EX临CE解PT趣IO呀N

逝案WH既EN炸O嫩TH贩ER围S鲁TH贸EN允

房岔

姐遇处理锹异常蜻

堡楼

佣幅EN仿D变

-------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------处理

oracle

系统自动生成系统异常外,可以使用

raise

来手动生成错误。l

Raiseexception;l

Raisepackage.exception;l

Raise;以上是

raise

的三种使用方法。第一种用于生成当前程序中定义的异常或在

standard

中的系统异常。

Declare

Invalid_idexception;

Id_valuesvarchar(2);

Begin

Id_value:=id_for(‘smith’);

Ifsubstr(id_value,1,1)!=’x’

Then

Raiseinvalid_id;

Endif;

Exception

Wheninvalid_id

Then

Dbms_output.put_line(‘thisisaninvalidid!’);

End;这是一个生成自定义异常的例子,当然也可以生成系统异常:

declare

employee_id_innumber;

BeginSelectemployee_idintoemployee_id_infromemploy_listwhereemployee_name=&n;Ifemployee_id_in=0Then

Raisezero_devided;Endif;

Exception

Whenzero_devided

Then

Dbms_output.put_line(‘wrong!’);

End;有一些异常是定义在非标准包中的,如

UTL_FILE

DBMS_SQL

以及程序员创立的包中异常。可以使用

raise

的第二种用法来生成异常。

Ifday_overdue(isbn_in,browser_in)>365

Then

Raiseoverdue_pkg.book_is_lost

Endif;在最后一种

raise

的形式中,不带任何参数。这种情况只出现在希望将当前的异常传到外部程序时。

Exception

Whenno_data_found

Then

Raise;

End;

Pl.sql

使用

raise_application_error

过程来生成一个有具体描述的异常。当使用这个过程时,当前程序被中止,输入输出参数被置为原先的值,但任何

DML

对数据库所做的改动将被保存,可以在之后用

rollback

命令回滚。下面是该过程的原型:

Procedureraise_application_error(

Numbinary_integer;

Msgvarchar2;

KeeperrorstackBooleandefaultfalse)其中

num

是在

-20999

-20000

之间的任何数字〔但事实上,

DBMS_OUPUT

DBMS_DESCRIBLE

包使用了

-20005

-20000

的数字〕;

msg

是小于

2K

个字符的描述语,任何大于

2K

的字符都将被自动丢弃;

keeperrorstack

默认为

false

,是指清空异常栈,再将当前异常入栈,如果指定

true

的话就直接将当前异常压入栈中。

CREATEORREPLACEPROCEDUREraise_by_language(code_inINPLS_INTEGER)

IS

l_messageerror_table.error_string%TYPE;

BEGIN

SELECTerror_string

INTOl_message

FROMerror_table,v$nls_parametersv

WHEREerror_number=code_in

ANDstring_language

=v.VALUE

ANDv.parameter='NLS_LANGUAGE';

RAISE_APPLICATION_ERROR(code_in,l_message);

END;ORACL内部异常:ORA-00001:违反唯一约束条件(.)

ORA-00017:请求会话以设置跟踪事件

ORA-00018:超出最大会话数

ORA-00019:超出最大会话许可数

ORA-00020:超出最大进程数()

ORA-00021:会话附属于其它某些进程;无法转换会话

ORA-00022:无效的会话ID;访问被拒绝

ORA-00023:会话引用进程私用内存;无法别离会话

ORA-00024:单一进程模式下不允许从多个进程注册

ORA-00025:无法分配

ORA-00026:丧失或无效的会话ID

ORA-00027:无法删去当前会话

ORA-00028:您的会话己被删去

ORA-00029:会话不是用户会话

ORA-00030:用户会话ID不存在。

ORA-00031:标记要删去的会话

ORA-00032:无效的会话移植口令

ORA-00033:当前的会话具有空的移植口令

ORA-00034:无法在当前PL/SQL会话中

ORA-00035:LICENSE_MAX_USERS不能小于当前用户数

ORA-00036:超过递归SQL()级的最大值

ORA-00037:无法转换到属于不同效劳器组的会话

ORA-00038:无法创立会话:效劳器组属于其它用户

ORA-00050:获取入队时操作系统出错

ORA-00051:等待资源超时

ORA-00052:超出最大入队资源数()

ORA-00053:超出最大入队数

ORA-00054:资源正忙,要求指定NOWAIT

ORA-00055:超出DML锁的最大数

ORA-00056:对象'.'上的DDL锁以不兼容模式挂起

ORA-00057:超出临时表锁的最大数

ORA-00058:DB_BLOCK_SIZE必须为才可安装此数据库(非)

ORA-00059:超出DB_FILES的最大值

ORA-00060:等待资源时检测到死锁

ORA-00061:另一个例程设置了不同的DML_LOCKS

ORA-00062:无法获得DML全表锁定;DML_LOCKS为0

ORA-00063:超出LOG_FILES的最大数

ORA-00064:对象过大以至无法分配在此O/S(,)

ORA-00065:FIXED_DATE的初始化失败

ORA-00066:LOG_FILES为

但需要成为

才可兼容

ORA-00067:值

对参数

无效;至少必须为

ORA-00068:值

对参数

无效,必须在

之间

ORA-00069:无法获得锁定--禁用了表锁定

ORA-00070:命令无效

ORA-00071:进程号必须介于1和

之间

ORA-00072:进程""不活动

ORA-00073:命令

介于

个参数之间时使用

ORA-00074:未指定进程

ORA-00075:在此例程未找到进程""

ORA-00076:未找到转储

ORA-00077:转储

无效

ORA-00078:无法按名称转储变量

ORA-00079:未找到变量

ORA-00080:层次

指定的全局区域无效

ORA-00081:地址范围[,)不可读

ORA-00082:

的内存大小不在有效集合[1],[2],[4]之内

ORA-00083:警告:可能损坏映射的SGA

ORA-00084:全局区域必须为PGA,SGA或UGA

ORA-00085:当前调用不存在

ORA-00086:用户调用不存在

ORA-00087:命令无法在远程例程上执行

ORA-00088:共享效劳器无法执行命令

ORA-00089:ORADEBUG命令中无效的例程号

ORA-00090:未能将内存分配给群集数据库ORADEBUG命令

ORA-00091:LARGE_POOL_SIZE至少必须为

ORA-00092:LARGE_POOL_SIZE必须大于LARGE_POOL_MIN_ALLOC

ORA-00093:

必须介于

之间

ORA-00094:

要求整数值

ORA-00096:值

对参数

无效,它必须来自

之间

ORA-00097:使用OracleSQL特性不在SQL92

级中

ORA-00099:等待资源时发生超时,可能是PDML死锁所致

ORA-00100:未找到数据

ORA-00101:系统参数DISPATCHERS的说明无效

ORA-00102:调度程序无法使用网络协议

ORA-00103:无效的网络协议;供调度程序备用

ORA-00104:检测到死锁;全部公用效劳器已锁定等待资源

ORA-00105:未配置网络协议

的调度机制

ORA-00106:无法在连接到调度程序时启动/关闭数据库

ORA-00107:无法连接到ORACLE监听器进程

ORA-00108:无法设置调度程序以同步进行连接

ORA-00111:由于效劳器数目限制在,所以没有启动所有效劳器

ORA-00112:仅能创立多达

(最多指定)个调度程序

ORA-00113:协议名

过长

ORA-00114:缺少系统参数SERVICE_NAMES的值

ORA-00115:连接被拒绝;调度程序连接表已满

ORA-00116:SERVICE_NAMES名过长

ORA-00117:系统参数SERVICE_NAMES的值超出范围

ORA-00118:系统参数DISPATCHERS的值超出范围

ORA-00119:系统参数

的说明无效

ORA-00120:未启用或安装调度机制

ORA-00121:在缺少DISPATCHERS的情况下指定了SHARED_SERVERS

ORA-00122:无法初始化网络配置

ORA-00123:空闲公用效劳器终止

ORA-00124:在缺少MAX_SHARED_SERVERS的情况下指定了DISPATCHERS

ORA-00125:连接被拒绝;无效的演示文稿

ORA-00126:连接被拒绝;无效的重复

ORA-00127:调度进程

不存在

ORA-00128:此命令需要调度进程名

ORA-00129:监听程序地址验证失败''

ORA-00130:监听程序地址''无效

ORA-00131:网络协议不支持注册''

ORA-00132:语法错误或无法解析的网络名称''

ORA-00150:重复的事务处理ID

ORA-00151:无效的事务处理ID

ORA-00152:当前会话与请求的会话不匹配

ORA-00153:XA库中的内部错误

ORA-00154:事务处理监视器中的协议错误

ORA-00155:无法在全局事务处理之外执行工作

ORA-00160:全局事务处理长度

超出了最大值()

ORA-00161:事务处理的分支长度

非法(允许的最大长度为)

ORA-00162:外部dbid的长度

超出了最大值()

ORA-00163:内部数据库名长度

超出了最大值()

ORA-00164:在分布式事务处理中不允许独立的事务处理

ORA-00165:不允许对远程操作进行可移植分布式自治转换

ORA-00200:无法创立控制文件

ORA-00201:控制文件版本

与ORACLE版本

不兼容

ORA-00202:控制文件:''

ORA-00203:使用错误的控制文件

ORA-00204:读控制文件时出错(块,#块)

ORA-00205:标识控制文件出错,有关详情,请检查警告日志

ORA-00206:写控制文件时出错(块,#块)

ORA-00207:控制文件不能用于同一数据库

ORA-00208:控制文件的名称数超出限制

ORA-00209:控制文件块大小不匹配,有关详情,请检查警告日志

ORA-00210:无法翻开指定的控制文件

ORA-00211:控制文件与先前的控制文件不匹配

ORA-00212:块大小

低于要求的最小大小(字节)

ORA-00213:不能重新使用控制文件;原文件大小为,还需

ORA-00214:控制文件''版本

与文件''版本

不一致

ORA-00215:必须至少存在一个控制文件

ORA-00216:无法重新调整从8.0.2移植的控制文件大小

ORA-00217:从9.0.1进行移植无法重新调整控制文件的大小

ORA-00218:控制文件的块大小

与DB_BLOCK_SIZE()不匹配

ORA-00219:要求的控制文件大小

超出了允许的最大值

ORA-00220:第一个例程未安装控制文件,有关详情,请检查警告日志

ORA-00221:写入控制文件出错

ORA-00222:操作将重新使用当前已安装控制文件的名称

ORA-00223:转换文件无效或版本不正确

ORA-00224:控制文件重设大小尝试使用非法记录类型()

ORA-00225:控制文件的预期大小

与实际大小

不同

ORA-00226:备用控制文件翻开时不允许进行操作

ORA-00227:控制文件中检测到损坏的块:(块,#块)

ORA-00228:备用控制文件名长度超出了最大长度

ORA-00229:操作不允许:已挂起快照控制文件入队

ORA-00230:操作不允许:无法使用快照控制文件入队

ORA-00231:快照

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论