知识大全 Oracle异常分类小记

Posted 信息

篇首语:习惯使我们双手机巧,使头脑笨拙。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle异常分类小记相关的知识,希望对你有一定的参考价值。

Oracle异常分类小记  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  前几天看《Oracle PL/SQL Programming》的异常处理部分 粗粗看了一遍 觉得有点乱 根据自己的理解作了一下分类 并相应给了一些简例 不一定很准确 供参考

  

  Oracle 异常

  具名Oracle异常

  Oracle为此类异常预先指定了异常号 异常信息 异常名称

  匿名Oracle异常

  Oracle为此类异常预先指定了异常号 异常信息 但未指定异常名称

  自定义异常

  普通自定义异常

  Oracle无关的业务逻辑异常 无异常号 异常信息 异常名称需要手工声明

  应用程序异常Raise_Application_Error

  Oracle无关的业务逻辑异常 此方法抛出的异常可以自定义异常号及异常信息 可以通过Exception_Init绑定到手工声明的异常名称上

   )Oracle异常

  Oracle异常总是由Oracle检测并自动抛出的

   )具名Oracle异常

  Oracle定义了 个具名的Oracle异常 比如

  Dup_val_on_index(ora )当中唯一索引所对应的列上键入重复值时

  No_data_found(ora )执行select into未返回行 或者引用了索引表未初始化的元素时

  流程

  A)在Exception模块按异常名进行处理

  示例

  DECLARE

  num number;

  BEGIN

  num:= / ;

  EXCEPTION

  when ZERO_DIVIDE then

  dbms_output put_line(SQLERRM);

  END;

  /

  ORA : divisor is equal to zero

  PL/SQL procedure successfully pleted

   )匿名Oracle异常

  Oracle中存在大量匿名的异常 比如

  ORA : parent key not found

  由于PL/SQL的异常处理模块只接受异常名称 不接受异常号(除了WHEN OTHERS语句 它可以捕获任意异常 不论你是否具有异常名称) 为便于处理 需要手工为其指定异常名称

  流程

  A)声明异常

  B)将此异常绑定到Oracle异常号上

  C)在Exception模块按异常名进行处理

  示例

  DECLARE

  ex EXCEPTION;

  PRAGMA EXCEPTION_INIT(ex );

  BEGIN

  insert into t values( );

  EXCEPTION

  when ex then

  dbms_output put_line(SQLERRM);

  END;

  /

  ORA : integrity constraint (ADMIN FK ) violated parent key not found

  PL/SQL procedure successfully pleted

   )自定义异常

  自定义异常总是开发者显式抛出来的

   )普通自定义异常

  流程

  A)声明异常

  B)使用Raise语句抛出异常

  C)在Exception模块按异常名进行处理

  示例

  DECLARE

  ex EXCEPTION;

  BEGIN

  RAISE ex;

  EXCEPTION

  when ex then

  dbms_output put_line(SQLERRM);

  dbms_output put_line( i raised a user defined exception ex );

  END;

  /

  User Defined Exception

  i raised a user defined exception ex

   )应用程序异常Raise_Application_Error(Num Msg)

  普通自定义异常既没有异常号(SQLCODE一律为 ) 也不能指定异常信息(SQLERRM一律为 User Defined Exception ) 如果想要为自定义异常指定异常号与异常信息 需要借助Raise_Application_Error(Num Msg)函数 这里的Num即异常号 范围是[ ] Msg则是异常信息

  对于此类异常 由于Num是自定义的 因此应该有相应的管理办法以避免重复使用异常号 比如可以将已使用的异常号保存在一张数据库中表 以便将来检查

  流程

  A)声明异常

  B)将此异常绑定到自定义的异常号上

  C)使用Raise_Application_Error(Num Msg)抛出异常 同时指定了异常号及异常信息

  D)在Exception模块按异常名进行处理

  示例

  CREATE OR REPLACE PROCEDURE mtest

  is

  ex EXCEPTION;

  PRAGMA EXCEPTION_INIT(ex );

  BEGIN

  Raise_Application_Error( raising my exception );

  EXCEPTION

  when ex then

  dbms_output put_line(SQLERRM);

  END;

  /

  Procedure created

  SQL> exec mtest

  ORA : raising my exception

cha138/Article/program/Oracle/201311/18175

相关参考

知识大全 PWC AC小记

PWCAC小记  以下文字资料是由(本站网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!长期潜水,为攒rp,我也来吐个泡泡..

知识大全 高盛电话面试小记

高盛电话面试小记来约好是下午4点,可是左等右等都没有电话,郁闷死了。要给我电话的是一个日本人。一边揣揣地担心自己到时候能不能听懂日本英语,一边在日月光华上看有关高盛的面经。等到6点多,我实在是忍受不了

治肩周炎小记

有这么一天,我去书架上拿书,胳膊往上一抬,哟,怎么生疼?再一抬,仍疼。以为干什么活儿累着了,三五天自会好转,也就没往心里去。那是个冬日,寒天渐深,冻意渐重,衣服也就加厚,再加厚,由秋衣而羊毛衫,而毛衣

知识大全 话说Hibernate和ADO.NET —练习随笔小记

话说Hibernate和ADO.NET—练习随笔小记  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

小记百岁寿星傅引珍

家住上海南昌路的傅引珍老人,出生于光绪二十二年,虽然历经一百余年的风风雨雨,但依然记忆清晰,思路敏捷。傅老太虽然年逾百岁,但体内新陈代谢和肠胃的消化能力很好,饮食也颇为奇特。她一天用餐五至六顿,菜基本

知识大全 邮政集团校园招聘计算机软体开发面试小记

虽然好多人是不喜欢邮政,不想去邮政,但是~~~在就业情况不是很好的今年,能进邮政何尝不是有幸之事,好歹人家是个国企,历史悠久,对国家的交通运输、物流啊这些还是有着他举足轻重的地位,只是面临改革,他需要

知识大全 请你以一名小记者的身份,采访这位妈妈,请设计三个有针对性的问题

请你以一名小记者的身份,采访这位妈妈,请设计三个有针对性的问题1,这位妈妈,请问您为什么让孩子在假期补课?2,为什么不能选择坐下来与孩子心平气和的谈一谈呢?3,孩子与您争吵时您是否感觉到自己也有不对的

知识大全 我10岁,语文数学英语美术等都好!是晶报小记者!但我想当演员,我应该怎么做

我10岁,语文数学英语美术等都好!是晶报小记者!但我想当演员,我应该怎么做?希望有高人帮我指导一下!网路上很多比赛呢~~可以在爸爸妈妈陪伴下参赛~~~你真的好棒哦,这么早就知道培养自己了,我们十岁还在

知识大全 我们学校马上开运动会了,我是学校的小记者,想采访下校长。不知道问什么问题好

我们学校马上开运动会了,我是学校的小记者,想采访下校长。不知道问什么问题好?请大家提提建议!1,请问您对这次运动会有什么感想?2,请问您觉得我们对这次运动会应该抱有怎样的态度?3,请问您对这次运动会想

心律失常如何分类

心律失常按其发生原理可分为冲动起源异常和冲动传导异常两大类。  (1)冲动起源异常  ①窦性心律失常:A、窦性心动过速;B、窦性心动过缓;C、窦性心律不齐;D、窦性停搏;E、窦房阻滞。  ②异位心律