在pl/sql里面这么调用带参数的存储过程 :具体存储过程请见:创建带参数的存储过程
DECLARE
STARTTIME DATE;
ENDTIME DATE;
BEGIN
STARTTIME := TO_DATE('2010-10-27', 'yyyy-mm-dd');
ENDTIME := TO_DATE('2013-10-29', 'yyyy-mm-dd');
omp_produce_allinfo ( STARTTIME, ENDTIME );
COMMIT;
END;
在java代码里面 调用存储过程的方法:
public String executeProcedure(final String startTime,
final String endTime) {
System.out.println("----dao 层开始调用存储过程-------");
return (String) this.getHibernateTemplate().execute(
new HibernateCallback() {
public String doInHibernate(Session session)throws HibernateException, SQLException {
boolean flag = false;
ResultSet rs = null;
/** 输出参数**/
//String out = "";
// Transaction trans = session.beginTransaction();
try {
String sql = "";
/**调用存储过程**/
CallableStatement cstmt = session.connection().prepareCall("{call omp_produce_allinfo(?,?)}");
/**设定时间格式**/
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try{
Date sdate = sdf.parse(startTime);
Date edate = sdf.parse(endTime);
/**把时间格式转换为sqldate类型**/
java.sql.Date sqlsDate=new java.sql.Date(sdate.getTime());
java.sql.Date sqleDate=new java.sql.Date(edate.getTime());
System.out.println(sqlsDate);
/**放入存储过程的参数**/
cstmt.setDate(1,sqlsDate);
cstmt.setDate(2,sqleDate);
/**可以有输出参数 这里暂时不需要**/
//cstmt.registerOutParameter(4,java.sql.Types.VARCHAR);
/**执行存储过程**/
cstmt.execute();
//out = cstmt.getString(4);
//System.out.println(out);
// trans.commit();
}catch(Exception e){
e.printStackTrace();
}
} catch (RuntimeException e) {
// trans.rollback();
flag = false;
logger.error(e);
}
return "存储过程调用完毕--omp_produce_allinfo--创建视图 ---omp_view_allinfo";
}
});
}