oracle中存储过程的三种异常捕获方式
2017-10-23 10:02
302 查看
oracle中存储过程的异常分为: 1.预定义异常:oracle已经定义了一个常量用于表示异常编号 异常 错误编号 常量名称 除数为0 -01476 ZERO_DIVIDE 案例: create or replace procedure test_ as c int; begin c:=10/0; exception when zero_divide then dbms_output.put_line('除数不能为0哦'); end; 2.非预定义异常:错误编号没有对应的常量 create or replace procedure test_ as c int; my_error exception; pragma exception_init(my_error,-01476); begin c:=10/0; exception when my_error then dbms_output.put_line('除数不能为0哦'); when others then dbms_output.put_line('未知错误'); end; 3.自定义异常 creat 4000 e or replace procedure move_moeny( u1 int, u2 int, money_ dec ) is b dec(19,2); --读取u1余额 my_error exception; --定义自定义异常 begin --判断转账的金额是否大于余额 select a.balance into b from account_ a where a.aid=u1; if b<money_ then raise my_error; end if; --如果余额大于转账金额,u1的余额要减少 update account_ set balance = balance-money_ where aid=u1; --u2的余额要增加 update account_ set balance =balance+money_ where aid=u2; --转账成功之后,要添加两条交易记录 insert into transfer values(x.nextval,sysdate,u1,'取出',money_); insert into transfer values(x.nextval,sysdate,u2,'存入',money_); exception when my_error then dbms_output.put_line('余额不足'); rollback; end;
相关文章推荐
- ORACLE 存储过程异常捕获并抛出
- ORACLE 存储过程异常捕获并抛出
- springMVC 三种国际化配置方式及No message found under code 'language.cn' for locale 'zh_CN'.异常
- Oracle sqlplus登录的三种方式
- oracle plsql 捕获异常和抛出异常
- oracle 密码保护的三种方式
- SQL语句的执行计划(oracle表的三种链接方式)
- MYSQL 存储过程 多表更新异常捕捉和异常处理方式
- Oracle 表三种连接方式使用介绍(sql优化)
- ios-Swift处理异常的三种方式
- oracle 导入数据库脚本后,有些视图或者存储过程没有自动编译的批量解决方式
- oracle中Normal,sysdba,sysoper三种连接方式和用户sys,system,sysdba,scott
- asp.net开发中常见公共捕获异常方式总结(附源码)
- oracle 存储过程 如何获得 捕获异常的内容
- SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 SignalR 简单示例 通过三个DEMO学会SignalR的三种实现方式 SignalR推送框架两个项目永久连接通讯使用 SignalR 集线器简单实例2 用SignalR创建实时永久长连接异步网络应用程序
- (转)C++异常对象三种方式传递的综合比较
- 启动oracle服务有三种方式:
- 启动/关闭oracle服务有三种方式
- 【Oracle】三种方式查看SQL语句的执行计划
- 关于python3捕获cx_oracle抛出的异常错误