PL/SQL中的异常

 我来答
户如乐9318
2022-06-26 · TA获得超过6661个赞
知道小有建树答主
回答量:2559
采纳率:100%
帮助的人:140万
展开全部

和其它开发语言一样,PL/SQL在运行过程中会出现各种错误,也就是异常,这些异常有的来自程序本身,有的来自开发人员。PL/SQL采用了统一捕获并处理异常的方式,异常发生,程序跳转到 异常块 进行匹配,然后进行处理,如果不捕获异常的话,PL/SQL程序会停止运行。

可以有多个 WHEN ... THEN 来进行异常匹配,一个异常匹配里面也可以用 or 来匹配多个异常.

PL/SQL中异常可以分为3类:
1)预定义异常
2)非预定义异常
3)自定义异常
前2个都是Oracle中的错误,程序中出现时会自动触发,而自定义异常是开发人员定义的异常,不会自动触发,需要手动触发.

Oracle中为每个错误提供了一个错误号,而捕获异常需要有名称。Oracle提供了一些已经 定义了名称 的异常,这就是预定义异常,下面列出开发中常用的预定义异常:

当然,上面只是用的比较多的一些预定义异常,通过下面的查询语句可以查看Oracle中所有的预定义异常:

Oracle中更多的还是非预定义异常,也就是只有错误编号和错误描述的异常,而没有名称的异常不能被捕获,所以需要为非定义异常定义名称.
非预定义异常的使用分为3步:
1)、声明异常的名称
2)、将名称和异常编号关联
3)、在异常块处捕捉异常
示例:

商品表product和分类表category存在主外键关系,在category表中不存在分类cid为'666'的分类,所以执行上面的SQL时会触发ORA-02291对应的异常.

开发中有些业务可能有特别的需求,比如性别只能是男、女,年龄不能为负数等等,这些和业务相关的不算系统的错误,如果我们要用异常的方式来处理,必须自定义异常,并显示触发.
自定义异常的使用分为4步:
1)声明异常的名称
2)为异常关联一个错误编号,值可以是-20999~-20000之间的负整数
3)利用RAISE关键字手动抛出异常
4)在异常块处捕捉异常
示例:

在PL/SQL中可以通过异常函数来获取异常的相关信息.
1)SQLCODE获取异常编号
2)SQLERRM获取异常信息

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式