- 浏览: 659075 次
- 性别:
- 来自: 常州
文章分类
- 全部博客 (345)
- java (63)
- Struts2 (11)
- Spring2.5 + (17)
- Hibernate (25)
- Struts2 Spring hibernate (5)
- log4j (3)
- apache tomcat (12)
- oracle (22)
- oracle_存储过程 (4)
- mysql (18)
- jquery (11)
- prototype (5)
- js (19)
- quartz (5)
- 设计模式 (6)
- eclipse/MyEclipse 注意事项 (9)
- eclipse (0)
- css (6)
- 正则表达式 (2)
- linux (18)
- PHP (6)
- 多线程 (20)
- XML (1)
- jstl (3)
- mongoDB (7)
- android (20)
- 反射 (1)
- IOS (46)
- SVN (3)
- C/C++ (4)
- 百度地图 (2)
- IO/SOCKET (3)
- 百度地图JS (1)
- 树莓派/香蕉派 (1)
最新评论
-
anny101:
想转发一下,不知道怎么转发。评论一下吧。方便查看。
fetch = FetchType.EAGER 作用 -
Navee:
果然我这也是是防火墙问题
解决 Linux 安装 httpd局域网无法访问 -
dhyang909:
...
oracle 10g+ 行列转换 -
国产希特勒:
真强,居然有人把公司的面试题挂到javaeye上了
锦江国际的一道面试题(很简单) -
tomfish88:
比如我要拦截不同业务的service类里面的方法 @Poi ...
Spring AOP annotation 拦截表达式 分析
没研究出来oracle exception的传播
procedure test1(p_RETCODE in out varchar2, p_retInfo in out varchar2); procedure test2(p_RETCODE in out varchar2, p_retInfo in out varchar2); procedure test3(p_RETCODE in out varchar2, p_retInfo in out varchar2);
procedure test1(p_RETCODE in out varchar2, p_retInfo in out varchar2) is begin insert into tree_tb (id, NODE_NAME) values ('1', '1'); test2(p_RETCODE, p_retInfo); if p_RETCODE <> 1 then raise test_exception; end if; if 1 = 1 then p_RETCODE := '-1'; p_retInfo := 'test1插入异常。'; raise test_exception; end if; p_RETCODE := '1'; p_retInfo := 'test1插入成功。'; exception WHEN test_exception then DBMS_OUTPUT.PUT_LINE('Error code ' || p_RETCODE || ': ' || p_retInfo); rollback; when others then p_RETCODE := SQLCODE; p_retInfo := SUBSTR(SQLERRM, 1, 1000); DBMS_OUTPUT.PUT_LINE('Error code ' || p_RETCODE || ': ' || p_retInfo); rollback; end; -- procedure test2(p_RETCODE in out varchar2, p_retInfo in out varchar2) is begin insert into tree_tb (id, NODE_NAME) values ('2', '2'); insert into tree_tb (id, NODE_NAME) values ('3', '3'); if 1 = 1 then p_RETCODE := '-2'; p_retInfo := '插入2失败'; raise test_exception; end if; insert into tree_tb (id, NODE_NAME) values ('4', '4'); p_RETCODE := '1'; p_retInfo := 'test2插入成功。'; exception WHEN test_exception then dbms_output.put_line('errorCode: ' || p_RETCODE || 'errorInfo ' || p_retInfo); rollback; when others then p_RETCODE := SQLCODE; p_retInfo := SUBSTR(SQLERRM, 1, 1000); DBMS_OUTPUT.PUT_LINE('Error code ' || p_RETCODE || ': ' || p_retInfo); rollback; end; /** * @作者: 马宏敏 * @功能描述: 测试存储过程同时调多个存储过程时的事务原子性与一致性 * @param retcode out 返回编码 * @param retinfo out 返回编码对应的信息 */ procedure test3(p_RETCODE in out varchar2, p_retInfo in out varchar2) is begin test1(p_RETCODE, p_retInfo); if p_RETCODE <> 1 then raise test_exception; end if; insert into tree_tb (id, NODE_NAME) values ('5', '5'); exception WHEN test_exception then dbms_output.put_line('errorCode: ' || p_RETCODE || 'errorInfo ' || p_retInfo); rollback; when others then p_RETCODE := SQLCODE; p_retInfo := SUBSTR(SQLERRM, 1, 1000); DBMS_OUTPUT.PUT_LINE('Error code ' || p_RETCODE || ': ' || p_retInfo); rollback; end;
发表评论
-
存储过程调存储过程的事务
2012-11-28 19:49 1121直接上代码: 是在包里写的存储过程,要测试的话,要先写 ... -
声明一个含有某张表不具备字段的游标
2012-11-22 15:28 1060其中,data.*是一张表,然后把其他表中的字段也加到sal_ ... -
每天凌晨清空sequence,让sequence每天从1开始
2012-11-22 15:18 2420用SQL命令行: job: variable job nu ... -
oracle 存储过程知识点
2012-10-18 23:50 1100第一个简单的存储过程: create or replace ... -
oracle 10g+ 行列转换
2012-08-18 23:30 1257WITH t AS( SELECT 1 AS sno, ... -
检查空表
2012-08-08 17:00 99411g导出数据的时候,空表导不出来,所以要检查空表 ... -
删除oracle10G
2012-07-27 15:12 1004软件环境: 1、Windows XP + Oracle 1 ... -
guid跟sequence做主键的比较
2012-05-23 14:28 1943转的: 今天上班,发现一个同事用oracle的s ... -
oracle 报表 自己备份用
2012-04-27 16:23 1096上个月做的报表 记下这个SQL文,以后还要用。 sel ... -
oracle 小知识点
2012-04-27 15:58 1008如果a.Num为null,那么就取后面的0 nvl(a.Nu ... -
oracle 判断 数据是否为数字
2012-04-16 19:50 1242SELECT * FROM t a WHERE len ... -
oracle 判断 数据重复
2012-03-30 19:38 1044select AUNAME from CLUB_A ... -
oracle 添加删除 某个字段,并添加注释
2011-11-07 15:25 2056oracle添加某个字段,并添加注释: alte ... -
PowerDesigner 的反向工程
2011-09-15 14:31 1376有的时候要分析别人的数据库 但看表不能很好的体现业务逻辑 ... -
oracle 数据重复,只取一条
2011-03-11 13:48 6867oracle中重复记录只取其中一条 select * f ... -
oracle 转换日期
2011-03-03 21:53 935TO_DATE('2011-02-22 10:38:50',' ... -
oracle 一次插入多条
2011-01-17 19:22 1123insert into test1 (TID, TNAME) ... -
oracle获取随机记录
2011-01-12 15:29 1074oracle获取随机记录 select * from (sel ... -
oracle 的一些命令
2011-01-11 17:27 973解锁scott账户 先用DBA进入SQLPLUS sqlplu ... -
oracle 导入导出
2010-11-25 11:24 679转的 exp本地导出与imp本地导入 exp命令: 1 e ...
相关推荐
### Oracle 存储过程 Exception 异常处理详解 #### 1. 异常处理概念 在 Oracle 存储过程中,异常处理是一项非常重要的技术,它能够帮助开发人员处理那些不可预见的情况,确保程序的健壮性和稳定性。异常处理主要...
- `transactionAttributes`: 定义了事务传播行为,其中`*`表示所有方法都采用`PROPAGATION_SUPPORTS`传播行为,当发生`Exception`异常时则不参与事务。 #### 业务服务配置 最后,定义了两个业务服务bean:`...
2. **增强可靠性**:异常机制允许开发者在出现错误时立即采取行动,而不是让错误悄无声息地传播,导致后续操作的失败。这有助于及时恢复系统的正常状态,减少潜在的数据损坏风险。 3. **优化性能**:合理利用异常...
根据文档提供的信息,该文档受版权法保护,并且其复制、传播或泄露均需获得Oracle Corporation的明确书面许可。此外,如果该文档被分发给美国政府机构,则须遵循特定的规定和限制条件。 #### 结论 本文档...
§16.4.2.2 使用户EXCEPTION_INIT处理 286 §16.4.2.3 使用户raise_application_error处理 286 第十七章 创建包和使用包 287 §17.1 引言 287 §17.2 包的定义 288 §17.3 包的开发步骤 289 §17.4 包的头部说明 289...
根据文档提供的版权信息,本手册的所有权归Oracle公司所有,未经许可不得进行复制或传播。同时,文档还强调了反编译、逆向工程等活动受到法律限制。这些规定旨在保护Oracle的知识产权,并确保用户遵守软件许可证协议...
- 常用的异常处理方法包括EXCEPTION WHEN、RAISE、RAISE_APPLICATION_ERROR等,可以定制错误响应。 通过这个初级教程,学习者将能够理解PL/SQL的基础概念,编写简单的存储过程、函数,并进行基本的数据操作和控制...
异常的传播规则是这样的:当一个异常在块内没有被处理时,它会被传播到包含这个块的外部块,这个过程一直持续到找到处理异常的代码或到达最外层,如果没有找到处理程序,异常将被返回给调用者或宿主环境。...
**5.2 异常错误传播** - **RAISE**:手动引发异常。 - **WHEN OTHERS**:捕获未指定的异常。 #### 六、存储函数和过程 **6.1 创建函数** - **函数定义**:使用CREATE FUNCTION语句创建函数。 - **参数传递**:...
- **异常处理部分(EXCEPTION)**:处理程序运行时可能出现的异常情况。 **2.2 标识符** PL/SQL中的标识符用来命名变量、常量等。它们必须遵循特定的规则,例如不能使用Oracle关键字作为标识符名称。 **2.3 变量...
异常处理的基本结构是通过EXCEPTION子句实现的,它包含一系列WHEN子句,每个子句关联一个异常名。当异常发生时,PL/SQL会停止执行当前块的其余部分,查找匹配的异常处理程序。如果找到,就执行该处理程序,然后返回...
PL/SQL程序的基本单位是块(Block),每个块由三个部分组成:声明部分(DECLARATION)、执行部分(EXECUTION)和异常处理部分(EXCEPTION)。 **§2.2 PL/SQL结构** 1. **声明部分**: 用来声明变量、常量、游标等...
PL/SQL程序通常在Oracle数据库环境中运行,可以通过多种方式执行,比如SQL*Plus、Oracle Enterprise Manager等客户端工具。 #### 二、PL/SQL块结构和组成元素 **2.1 PL/SQL块** PL/SQL程序的基本单元是块,一个...