我本身特别痛恨存储过程,但是迫于无奈不得不用,我觉得存储过程最恶心的地方就是:在sqlserver上写完了还要在oracle上重写一遍,恶心至极,还好可以通过工具自动生成但是还是需要手工整理一遍,其实还有一件很恶心的事情就是用java调用存储过程的时候不能保证统一性,因为oracle中的结果集返回形式和sqlserver并不相同,为了解决这个问题,我曾经在spring的基础上搞了个通用的写法,但是觉得依赖spring太麻烦而且还不够灵活于是本周末在jdbc的基础上重写了一个,因为尚且没用在项目中使用不知道是否有其他问题,比如某些情况还没用覆盖到,bug是必然有的了呵呵。
如果大家有感兴趣的话,可以下回去看看,希望大家广开言论。如果有更好想法的朋友们,请分享出来,共同学习进步。分享快乐!详细介绍
http://blog.csdn.net/sunyujia/archive/2008/05/18/2456325.aspx下载地址(源码,eclipse工程附依赖包,junit测试和两个库的sql脚本)
http://download.csdn.net/source/459115下面是一个简单的调用示例 public void test1() {
ProcedureResult result = getSimpleJdbcTemplate().execProcedure("过程名",
new ProcedureCallBack() {//执行返回结果集的过程
public Object mapRow(ResultSet rs, int rowNum)
throws SQLException {
return new Pepole(rs.getString(1));//行结果集的封装
} public void registerParameter() throws SQLException {
registerOutParameter(1, Types.INTEGER);//out型参数
setInt(2, 9);//过程的参数
addOracleCursor(3);
addOracleCursor(4);
}
});
TestUtil.println(result);
}
public class ProcedureResult {
private List rs = new ArrayList();//一个过程不止可以返回一个ResultSet,这个值是过程返回的n个结果集,其中的每个对象又是一个list(一个ResultSet处理后的集合)
private List output = new ArrayList();//过程的out参数输出值
private Object value;//过程本身的返回值

}
另外来者皆有分。

解决方案 »

  1.   


    没办法公司以前是用dephi写的,目前我们公司有的产品同时使用hibernate,ibatis,jdbc,存储过程,自行研究的db解决方案。
    你说多郁闷呵呵。
      

  2.   

    不需要 
    我日常编程的选择准则是:
    对于复杂查询来说最坏的情况使用存储过程(非查询可选余地就比较少了),如果函数就可以搞定就用函数,如果sql搞不定函数能搞定的,一般ibatis能搞定,如果ibatis能搞定又不想用的,hibernate能搞定,如果太easy了就用jdbc搞定。
      

  3.   

    我在这也散分,分少的可以去接接分。
    http://topic.csdn.net/u/20080518/22/5a21ffa0-1b72-4298-ab7f-24e096ff86de.html
      

  4.   

    不熟悉SQLSERVER 
    想知道 JDBC是怎么处理存储过程返回的数据的
    用OUT参数返回 在java代码调用后是怎么取得返回数据?
    能简单的说下吗?谢谢
      

  5.   

    楼上的我文章里面贴出的代码里面已经写了噢,仔细看就会看到CallableStatement cstm = conn.prepareCall(sql);

    boolean results = cstm.execute();

    cstm.getObject(1)就可以取到第一个out参数返回的值
      

  6.   

    我们现在老师也在将JDBC怎么调用存储过程.不是很懂!
    向孙大哥学习了...
      

  7.   

    有些同感,我们写的时候不光要写oracle,sqlserver还要写mysql,崩溃了,公司要求.....
      

  8.   


    我不在qq群,不过在你论坛里面注册了噢呵呵,你应该知道我是第一批会员,偶尔去看看不过不常登录。我一会给你私信吧。
    我不常开qq,没有上班闲聊的习惯,周末有时会上。
      

  9.   

    存储过程好处还是很多的,又的时候用java代码写一些   业务方面的很麻烦的 但存储过程可以简单很多哦