oracle存储过程3
来源:互联网 发布:c 多线程编程 视频 编辑:程序博客网 时间:2024/06/13 08:29
为了提高存储过程的健壮性,避免运行错误,当建立存储过程时应包含异常处理部分。异常(EXCEPTION)是一种PL/SQL标识符,包括预定义异常、非预定义异常和自定义异常。预定义异常是指由PL/SQL提供的系统异常,非预定义异常用于处理与预定义异常无关的Oracle错误(如完整性约束等),自定义异常用于处理与Oracle错误的其他异常情况。RAISE_APPLICATION_ERROR用于自定义错误消息,并且消息号必须在-20000~-20999之间。
Oracle数据库中提供了一些异常处理的方法,下面通过一个实例来说明。
create or replace procedure acc2name(v_acc_no in com_item.acc_no%type, v_acc_name out com_item.acc_name%type) is begin select acc_name into v_acc_name from com_item where acc_no=v_acc_no; EXCEPTION when NO_DATA_FOUND then RAISE_APPLICATION_ERROR(-20000,'ERROR:不存在!'); end;
自定义异常处理:
create or replace procedure acc2name(v_acc_no in com_item.acc_no%type, v_acc_name out com_item.acc_name%type) is v_raise exception; begin if v_acc_no='1001' then raise v_raise; end if; select acc_name into v_acc_name from com_item where acc_no=v_acc_no; exception when v_raise then RAISE_APPLICATION_ERROR(-20000,'ERROR:没有权限!'); when no_data_found then RAISE_APPLICATION_ERROR(-20001,'ERROR:不存在!'); end;
事务用于确保数据的一致性,由一组相关的DML语句组成,该组DML语句所执行的操作要么全部确认,要么全部取消。当执行事务操作(DML)时,Oracle会在被作用的表上加锁,以防止其他用户改变表结构,同时也会在被作用的行上加行锁,以防止其他事务在相应行上执行DML操作。当执行事务提交或事务回滚时,Oracle会确认事务变化或回滚事务、结束事务、删除保存点、释放锁。保存点(SAVEPOINT)在当前事务中,标记事务的保存点。回滚事务到指定的保存点(ROLLBACK TO SAVEPOINT)回滚当前事务到指定的保存点,丢弃该保存点创建后的任何改变,释放锁。
当执行DDL、DCL语句,或退出SQL*PLUS时,会自动提交事务;事务期间应避免与使用者互动;查询数据期间,尽量不要启动事务;尽可能让事务持续地越短越好;在事务中尽可能存取最少的数据量。
存储过程事务处理实例:
create or replace procedure ins_item is begin insert into com_item(acc_no,acc_hrt,acc_name) values('1009','10900','ATM现金'); commit; savepoint savepoint1; insert into com_item(acc_no,acc_hrt,acc_name) values('1001','10100','库存现金'); commit; exception when dup_val_on_index then rollback to savepoint savepoint1; RAISE_APPLICATION_ERROR(-20010,'ERROR:违反唯一索引约束!'); end;
Create or replace package 包名 as function 函数名,创建函数包,as后可加多个函数;
Create or replace package 包名 as procedure 存储过程名,创建存储过程包,as后可加多个存储过程。
包调用:call 包名.函数名(存储过程名)。
- oracle存储过程3
- oracle 存储过程基础知识3
- oracle之存储过程3-执行存储过程
- Oracle:存储过程,存储函数
- Oracle-存储过程 存储函数
- Oracle存储过程、存储函数
- oracle 存储函数,存储过程
- Oracle存储过程
- 调试oracle存储过程。
- ORACLE 存储过程实战
- Oracle 存储过程
- oracle存储过程使用
- Oracle 创建存储过程
- 调试oracle存储过程
- oracle java存储过程
- 创建Oracle存储过程
- 加密oracle存储过程
- oracle存储过程分页
- LCD驱动中pixclock的计算
- 解决Ubuntu/debian的Apt-get 由于依赖关系安装失败的问题
- cocos2dx wp8 中文字体 解决方案
- Qt Udp聊天室
- 字符串转十六进制 十六进制转字符串
- oracle存储过程3
- http://blog.csdn.net/huangyanbin123/article/details/38943575
- Digital Raw Capture 笔记
- UVa 10285 Longest Run on a Snowboard [DP]
- hdu 2112 最短路 dijkstra优先队列
- spring执行定时任务
- 网易音乐接口
- Working with Struts 2 actions 读书笔记
- texlive ubuntu dvi xdvi tex 反向搜索