原生jdbc执行存储过程

时间:2023-03-08 20:19:40
 //定时任务,结转 .
//表名 fys_sch_lvyou2 ,存储过程名:fys_sch_lvyou2_carrayover
//无参调用:{call insertLine}
//有参调用:{call fys_sch_lvyou2_carrayover(?,?) 然后传递参数即可
public void startCarrayOver(){
//获取要结转的时间:当前月(2016年09月30日)的上月,2016年08月
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -1);
String syear = c.get(Calendar.YEAR)+"";
int month = c.get(Calendar.MONTH)+1;
String smonth = month<10?"0"+month:month+"";
System.out.println("From:"+syear+"-"+smonth);
//执行存储过程 TomcatDataSource tds = SpringBeanUtils.getBean("dataSourceDefault");
Connection conn = null;
CallableStatement cs = null;
try {
conn = tds.getConnection();
cs = conn.prepareCall("{call carryover(?,?)}");
cs.setString(1, syear);
cs.setString(2, smonth);
cs.execute();
System.out.println("执行存储过程正常!结转成功!");
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (cs!=null) {
cs.close();
}
if (conn!=null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println("资源关闭成功!");
}
}

存储过程详见:oracle函数和存储过程示例