java调用一连串存储过程 哪种方式好一点呢

蜡笔小新_ 发布于 2014/09/24 10:21
阅读 922
收藏 0

javaWeb项目里有一个功能要调用ORACLE数据库里的一连串存储过程,大概有十几个吧。

我现在有两个想法:

一个是反正这十几个存储过程是固定的,我就直接在程序中循环调用,如果其中一个失败了我就跳出循环后面不执行了。-----》问题是我不知如何获取每个存储过程如何判断是否成功,也没有输出参数。

另一个是我将这十几个写在一个新的存储过程里,程序只调用这个总的就行。---》但是每个存储过程执行的状态还是不是很好拿。

请大家给我想想注意,怎么弄合适。

执行完每个小的存储过程后要将每个的是否执行成功、执行用时、开始时间、结束时间、存储过程名要查到一张LOG表里。。。。麻烦死了。。。

加载中
0
kalo
kalo

假设一共10个存储过程,你就写10个调用存储过程的方法,然后,再写一个方法,统一来调用刚刚你写的10个方法,类似下面这样:

ConnectionManager 是简单封装的一个jdbc连接的一个类
try {
    ConnectionManager.openConnection();
    try {
	ConnectionManager.beginTransaction();
	try {
	    // 记录调用方法1的开始时间
	    // 调用方法1
	    // 记录结束时间					
	    if (有错误) {
		ConnectionManager.rollBack();
		return;
	    }					
	    // 记录1的日志
					
					
	    ..依次类推,执行10个			


	    ConnectionManager.commit();
	} catch (Exception e) {
	    ConnectionManager.rollBack();
	    throw e;
	}
    } finally {
	ConnectionManager.closeConnection();
    }
} catch (Exception ex) {
    ex.printStackTrace();
}



0
h
hao5ang

存储过程可以有返回值的.用这个来判断执行结果.感觉那些繁琐的调用和执行状态问题,可以写个方法复用一下.

不知道在存储过程里面有没有更好的实现方式.求大神进一步指导.

http://dolphin-ygj.iteye.com/blog/436936

0
Steve
Steve

目测你的每个存储过程不依赖其它过程的执行结果,所以你可以这么想:

(1)十几个存储过程就是十几个请求,每个请求的处理是独立互不干扰的,但是处理程序都是同一个。

(2)十几个存储过程就是一次请求但需要并发处理,这样并发程序也不互相干扰,处理程序也是同一个。

既然你是javaWeb,所以可以用的东西太多,什么httpClient模拟发十多个请求,或者自己接受到请求后启线程来处理都可以。

0
infonous
infonous
把多个存储过程写在一个ORACLE包或一个存储过程里,然后再在 java 里调用,这样可行不?
蜡笔小新_
蜡笔小新_
也是可以的!
0
温柔杀手
Oracle 存储过程有异常机制,跑出异常后 可以监测到在什么地方出错,错误时什么,在捕获异常后返回你想要的数据给程序,就可以看到所有的异常信息。这个一个一个调用也没有关系,如果考虑性能,我还是建议在数据建一个总的存储过程来执行,每个子存储过程抛出异常后,把异常信息在用一张表来存储 ,总存储过程返回失败标示,否则成功,要什么异常信息就可以查询异常信息存储表,既提高效率也便于统计,
蜡笔小新_
蜡笔小新_
不错不错!!!
返回顶部
顶部