在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"; } }); }