PL/SQL编程的小结(异常处理篇)

异常处理呢!也是一个非常重要的知识点,是很多数据库(Oracle ,MySQL)都有的内容,所以学好它也是很重要的,这篇文章就接着上篇文章(链接 如下:https://blog.csdn.net/minglinhwsrg/article/details/106011847)继续探讨PL/SQL编程的内容。

异常:是PL/SQL程序块出错或被警告时,给客户的提醒
现在的异常分为:预定义异常,自定义异常(又分为:1. 错误编号异常,2. 业务逻辑错误),现在来分别看看不同的异常。
1. 预定义异常:数据库已经写好的一些异常种类,供咱们直接使用。

下面列出异常种类,以及对一部分进行演示:

在这里插入图片描述在这里插入图片描述在这里插入图片描述

	图上是描述了,预定义的异常,现在知道这么多的异常,也该做个演示了:
	例子:declare 
				 	v_ename emp.ename%type;
			begin
					 select ename into v_ename from emp
					 where empno=&emp_no;
					 dbms_output.put_line('雇员名'||v_ename);
		exception
					 when no_data_found then
  					dbms_output.put_line('雇员号不存在,请重新输入'||v_ename);
			end;
	这是咱们经常使用的异常,从上图中可以查出no_data_found是没有查询到数据的异常。
	大家可以看出来,预定义异常就是定义好,让咱们用户进行使用的,咱们只要知道这个异常使用格式,并记住几个常用的预定义异常就好啦!!!
	
	废话少说,上格式:
		when 预定义异常错误名称 then
			在该异常下的提示信息
	这个格式是不是很简单,但是注意我这是简略的格式,你可以看看我上面写的完整代码噢。
	
	忘记说了,还有一个很重要的异常错误名称:“others”,这可是万能异常,如果你有异常想不起来错误名称,又想有报异常提醒的功能,这个就是你的不二人选喽!!!
	但是,你也能看出来,others类似与java中导报的“ * ”,虽然全,但不具体,相对来说,效率就有所下降,所以在巨大量的代码中,要考虑效率呦!!!
  1. 自定义异常:
    好多教材把异常分为,预定义异常,非预定义异常,自定义异常。感觉有点啰嗦,你们认为大致分为几个类呢!!
    这边说说自定义异常的步骤:
    (1) 在定义部分定义异常名
    (2) 在异常和Oracle的错误建立练习
    (3) 在异常部分捕捉异常

     	<1>错误编号异常
     		遵从自定义异常的步骤可以简写为
     		declare
     		声明异常,例:dept_null_error exception;(定义了一个名为“dept_null_error”的异常。)
     		可在此处建立关联,例:pragma exception_init(dept_null_error,-1400);(此处使用伪过程把咱们定义的异常和错误编号-1400关联起来,)
     				(伪过程格式:pragma exception_init(异常名,错误编号);)
     		begin
     		此处也可以建立关联:
     			例:if a=0 then
     					raise dept_null_error;
     					end if;
     					raise语句,即触发语句,,此句话的意思是:当a等于零时触发dept_null_error异常。
     					这可以看出在声明部分和程序开始的区域进行关联,但是注意,不同的语句,写的位置时不尽相同的。
     					另外,一个异常只要有一个关联即可,这里我是为演示。
     		exception
     		捕捉异常 ,这边就不过多的演示了
     		end;
    

这里就要注意啦,预定义异常,错误编号异常,业务逻辑异常的区别:

			这里就要说说几个东西了,即:sqlcode(错误编号),sqlerrm(错误信息),错误名称,关联。
			其实,大家看看就已经明白了这四个名词的抽象意义,这就从这四者来看看三种异常的区别:
			1. 预定义异常:四者都已经定义好了,且名称与错误编号也进行了关联。
			2. 错误编号异常:这个是数据库定义了很多没有关联的sqlcode和sqlerrm,这里就是自定义一个异常名,并于想要实现功能的sqlcode进行关联。
			3. 业务逻辑错误:这个很明显,这个不是触发了数据库中的约束,等规则所形成的异常,例:半个人,不可能吧,这就是一个业务逻辑异常,从这四方面说就是:四个东西,数据库都没有做好,自己来!!!
			对喽:对于部分自定义的异常可以不用sqlcode,例如:raise语句,直接触发。(上面的异常处理主要是对用sqlcode的异常进行分类的,不要钻牛角尖哦!!!)
  1. 业务逻辑错误
    这个我不想细讲了,因为前面说了很多了,一切东西自己来,咱们就自己建就是:

     例:
     declare 
     				v_sal number;
     				e_sal_error exception;
     begin
     		 select sal into v_sal from emp where empno=&emp_no;
     			if v_sal>=2500 then
     		  		 dbms_output.put_line('该雇员工资:'||v_sal);
     					raise e_sal_error;
     			 end if;
     exception
     		when e_sal_error then
     		    dbms_output.put_line('该雇员工资高于2500了');
     end;
     这里使用的是无sqlcode的方法,
     例:
     declare 
     				v_sal number;
     				e_sal_error exception;
     begin
     		 select sal into v_sal from emp where empno=&emp_no;
     			if v_sal>=2500 then
     		  		 raise_application_error(-20001,'该雇员工资超过2500');
     			 end if;
     exception
     end;
     注意:又一条关联语句:	raise_application_error(错误编号,'自定义信息',[true/false(此部分可选,是否把错误消息放入错误栈中。)]);
     	例:	raise_application_error(-20001,'该雇员工资超过2500');
    

    这边整理一下几个关联语句:

     1.伪过程格式:pragma exception_init(异常名,错误编号);【用于声明部分】 
     2. raise语句: raise 异常名;即触发语句
     3. 定义错误代码以及错误消息文本:raise_application_error(错误编号,'自定义信息',[true/false(此部分可选,是否把错误消息放入错误栈中。)]);
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 内容概要 《计算机试卷1》是一份综合性的计算机基础和应用测试卷,涵盖了计算机硬件、软件、操作系统、网络、多媒体技术等多个领域的知识点。试卷包括单选题和操作应用两大类,单选题部分测试学生对计算机基础知识的掌握,操作应用部分则评估学生对计算机应用软件的实际操作能力。 ### 适用人群 本试卷适用于: - 计算机专业或信息技术相关专业的学生,用于课程学习或考试复习。 - 准备计算机等级考试或职业资格认证的人士,作为实战演练材料。 - 对计算机操作有兴趣的自学者,用于提升个人计算机应用技能。 - 计算机基础教育工作者,作为教学资源或出题参考。 ### 使用场景及目标 1. **学习评估**:作为学校或教育机构对学生计算机基础知识和应用技能的评估工具。 2. **自学测试**:供个人自学者检验自己对计算机知识的掌握程度和操作熟练度。 3. **职业发展**:帮助职场人士通过实际操作练习,提升计算机应用能力,增强工作竞争力。 4. **教学资源**:教师可以用于课堂教学,作为教学内容的补充或学生的课后练习。 5. **竞赛准备**:适合准备计算机相关竞赛的学生,作为强化训练和技能检测的材料。 试卷的目标是通过系统性的题目设计,帮助学生全面复习和巩固计算机基础知识,同时通过实际操作题目,提高学生解决实际问题的能力。通过本试卷的学习与练习,学生将能够更加深入地理解计算机的工作原理,掌握常用软件的使用方法,为未来的学术或职业生涯打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值