Lopoincare's Blog

那逝去的一切,将消失在时间之中,却会留在记忆的某个角落…… 记下属于我们的那一小片记忆……

« xStream转换从XML转为对象,在jdk1.5或者weblogic9.2报错五年了 »

Spring SimpleJdbcTemplate调用存储过程

 使用Spring JdbcTemplate调用存储过程 
Spring的SimpleJdbcTemplate将存储过程的调用进行了良好的封装,但可惜只能用于jdk1.5的环境,无法再jdk1.4环境下使用

有返回值的存储过程(非结果集)

存储过程接收一个入参,返回一个出差

public void test() { 

  String param2Value = (String) this.getSimpleJdbcTemplate().getJdbcOperations().execute( 

     new CallableStatementCreator() { 

        public CallableStatement createCallableStatement(Connection con) throws SQLException { 

           String storedProc = "{call testpro(?,?)}";// 调用的sql 

           CallableStatement cs = con.prepareCall(storedProc); 

           cs.setString(1, "p1");// 设置输入参数的值 

           cs.registerOutParameter(2, OracleTypes.VARCHAR);// 注册输出参数的类型 

           return cs; 

        } 

     }, new CallableStatementCallback() { 

         public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException { 

           cs.execute(); 

           return cs.getString(2);// 获取输出参数的值 

     } 

  }); 

 

this.getSimpleJdbcTemplate().getJdbcOperations()可以执行jdbcTemplate()的方法

注:cs.getString(2)中的数值2是存储过程中的out列对应的索引值(第一个参数索引为1,如此类推) 否则会报错invalid ResultSet access for SQL ......无效的索引

发表评论:

Powered By Z-Blog 1.8 Arwen Build 90619
Copyright © Lopoincare's 博客