Oracle PL/SQL开发基础(第三十一弹:自定义异常)
来源:互联网 发布:壮语翻译软件 编辑:程序博客网 时间:2024/06/09 16:45
声明异常
如:
DECLARE e_nodeptno EXCEPTION;BEGIN NULL;END;
异常的声明跟变量的声明非常相似,其类型为EXCEPTION。不过异常是一种错误的表示形式,而不是一个真正的变量,因此不能在赋值语句或SQL语句中使用异常,但是异常和变量的作用范围和规则是相同的。
作用域范围
- 在同一个块中不能声明一个异常两次,但是可以在不同的块中声明相同的异常。
- 在一个块中声明的异常在本块中和其子块中可见,也就是说内层块可以引用在外层块和本块中定义的异常,但是不能引用在子块中定义的异常。
- 如果在子块重新声明外部块中同名的异常,将覆盖外部块中的全局异常,使得子块不能引用外部块中的全局异常,但是可以在标签块中声明相同的异常。
抛出异常
预定义异常是当有关Oracle错误产生时,由Oracle隐式抛出的;自定义异常需要显式地使用RAISE进行抛出。
不过RAISE也可以抛出预定义的异常。
如:
DECLARE e_nocomm EXCEPTION; --自定义的异常 v_comm NUMBER (10, 2); --临时保存提成数据的变量 v_empno NUMBER (4) := &empno; --从绑定参数中获取员工信息BEGIN SELECT comm INTO v_comm FROM emp WHERE empno = v_empno; --查询并获取员工提成 IF v_comm IS NULL --如果没有提成 THEN RAISE e_nocomm; --触发异常 END IF;EXCEPTION WHEN OTHERS THEN --OTHERS必须单独出现 DBMS_OUTPUT.put_line ('错误编码:'||SQLCODE||' 错误消息:'||SQLERRM(100)); RAISE; --重新抛出异常 END;
处理异常
如:
DECLARE e_nocomm EXCEPTION; ...BEGIN ...EXCEPTION WHEN e_nocomm THEN ... WHEN NO_DATA_FOUND THEN ... WHEN OTHERS THEN ...END;
阅读全文
1 0
- Oracle PL/SQL开发基础(第三十一弹:自定义异常)
- Oracle PL/SQL开发基础(第三十五弹:异常的传递)
- Oracle PL/SQL开发基础(第三十六弹:异常处理的一些经验)
- Oracle PL/SQL开发基础(第三弹:修改表)
- Oracle PL/SQL开发基础(第三十三弹:EXCEPTION_INIT)
- Oracle PL/SQL开发基础(第三十四弹:RAISE_APPLICATION_ERROR)
- Oracle PL/SQL开发基础(第三十二弹:SQLCODE和SQLERRM)
- Oracle备忘录(十一)--游标,异常,PL/SQL
- Oracle PL/SQL开发基础(第十九弹:集合的异常处理)
- Oracle PL/SQL开发基础(第二十九弹:异常处理简介)
- Oracle PL/SQL开发基础(第三十弹:预定义异常)
- Oracle PL/SQL开发入门(第三弹:变量)
- Oracle PL/SQL开发基础(第四弹:索引)
- Oracle PL/SQL开发基础(第五弹:视图)
- Oracle PL/SQL开发基础(第六弹:简单查询)
- Oracle PL/SQL开发基础(第十弹:子查询)
- Oracle PL/SQL开发基础(第十四弹:序列)
- Oracle PL/SQL开发基础(第十五弹:同义词)
- 使用Nexus搭建Maven本地仓库
- idea 2017注册码
- 几种排序算法的讲解(二)
- day23(File递归练习)
- 关于typedef的用法总结
- Oracle PL/SQL开发基础(第三十一弹:自定义异常)
- [DP动态规划]导弹拦截
- 日志管理
- Hdu6085 Rikka with Candies(2017多校第5场)
- 列出与'SCOTT'从事相同工作的所有员工及部门名称、部门人数、平均工资
- this之后的call,apply,bind。
- 钢铁是怎样炼成的-有声励志文学
- 初次使用crywin从安装到使用windows下的python
- 【NOIP模拟8.9】