在SSH中通过spring的jdbctemplate接口调用oracle数据库的函数与存储过程
2014-03-31 10:49
716 查看
曾经有段时间,因为要获取oracle存储过程或者函数中的多个返回值,但不知得在java代码中如何实现,因没有时间研究,就将结果通过编写sql函数,并将结果值串通过分隔符在一起来取值,通过select 函数名 from dual这样的模式来执行函数,虽然也能实现所要的结果,但总觉得有些怪异,故空闲下来后就上网搜索下,果然有比较好用的方法,便修改下本身的调用代码,执行成功后顺便分享下。
一、执行存储过程,
存储过程名P_SYNCH_EMPLOYBUSI,
参数有pa1,in;pa2,out;
String stmt_sql = "{call "+P_SYNCH_EMPLOYBUSI+"(?,?)}";
String str_result ="";
final String pa1 = para1;
final String pa2 = "test";
Map resultMap= (Map)this.getJdbcTemplate().execute(stmt_sql, new CallableStatementCallback(){
public Object doInCallableStatement(CallableStatement cs)throws SQLException,DataAccessException{
cs.setString(1, pa1);
//cs.setString(2, pa2);
cs.registerOutParameter(2, Types.VARCHAR);
cs.execute();
Map map = new HashMap();
map.put("result", cs.getString(2));
return map;
}
});
该调用方法中涉及到了回调方法 CallableStatementCallback与CallableStatement 接口实现,如果不求甚解的话可以照搬,不过作为一名程序员,还是要理解个透最好。
调用函数方法也是差不多,就是将函数名修改即可,以下是函数的调用方法,有返回值哦^^
String stmt_sql = "{? =call F_BUSIPOITCALCULATE(?)}";
String str_result ="";
final String pa1 = temploybusi.getId().toString();
final String pa2 = "test";
Map resultMap= (Map)this.getJdbcTemplate().execute(stmt_sql, new CallableStatementCallback(){
public Object doInCallableStatement(CallableStatement cs)throws SQLException,DataAccessException{
cs.registerOutParameter(1, Types.NUMERIC);
cs.setInt(2, Integer.parseInt(pa1));
cs.execute();
Map map = new HashMap();
map.put("result", cs.getString(1));//获取返回值
return map;
}
});
一、执行存储过程,
存储过程名P_SYNCH_EMPLOYBUSI,
参数有pa1,in;pa2,out;
String stmt_sql = "{call "+P_SYNCH_EMPLOYBUSI+"(?,?)}";
String str_result ="";
final String pa1 = para1;
final String pa2 = "test";
Map resultMap= (Map)this.getJdbcTemplate().execute(stmt_sql, new CallableStatementCallback(){
public Object doInCallableStatement(CallableStatement cs)throws SQLException,DataAccessException{
cs.setString(1, pa1);
//cs.setString(2, pa2);
cs.registerOutParameter(2, Types.VARCHAR);
cs.execute();
Map map = new HashMap();
map.put("result", cs.getString(2));
return map;
}
});
该调用方法中涉及到了回调方法 CallableStatementCallback与CallableStatement 接口实现,如果不求甚解的话可以照搬,不过作为一名程序员,还是要理解个透最好。
调用函数方法也是差不多,就是将函数名修改即可,以下是函数的调用方法,有返回值哦^^
String stmt_sql = "{? =call F_BUSIPOITCALCULATE(?)}";
String str_result ="";
final String pa1 = temploybusi.getId().toString();
final String pa2 = "test";
Map resultMap= (Map)this.getJdbcTemplate().execute(stmt_sql, new CallableStatementCallback(){
public Object doInCallableStatement(CallableStatement cs)throws SQLException,DataAccessException{
cs.registerOutParameter(1, Types.NUMERIC);
cs.setInt(2, Integer.parseInt(pa1));
cs.execute();
Map map = new HashMap();
map.put("result", cs.getString(1));//获取返回值
return map;
}
});
相关文章推荐
- Spring如何使用JdbcTemplate调用存储过程的三种情况
- Spring如何使用JdbcTemplate调用存储过程的三种情况
- jdbcTemplate 调用存储过程和回到函数
- Spring如何使用JdbcTemplate调用存储过程的三种情况
- [原]Spring如何使用JdbcTemplate调用存储过程的三种情况
- Spring如何使用JdbcTemplate调用存储过程的三种情况
- 使用Spring的JdbcTemplate调用Oracle的存储过程
- spring的jdbcTemplate调用存储过程
- 使用Spring的JdbcTemplate调用Oracle的存储过程
- spring 中使用jdbctemplate调用Oracle的存储过程
- 使用Spring的JdbcTemplate调用Oracle的存储过程
- Spring如何使用JdbcTemplate调用存储过程的三种情况
- 通过java调用存储过程往oracle数据库里插数据(无返回值)
- MySQL-调用存储过程和函数
- 调用存储过程和函数
- php调用mysql存储过程和函数的方法
- JAVA中调用存储过程和函数
- 调用存储过程取到数据通过NPOI存到Excel中
- JAVA调用ORACLE的存储过程、函数的返回结果集例子
- java调用Oracle数据库的存储过程