最近用到别人系统的存储过程,调试了很长时间特意做个笔记:
/**
* 获取源数据
* @throws Exception
*/
public void getSourceData()throws Exception{
//存储声明
CallableStatement cs = null ;
//数据结果集
ResultSet rs = null;
try {
//预处理存储
cs = this.getSourceConn().prepareCall("{ call anhuidb.pr_ahylsfc_scd(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) }");
//设置参数
cs.setString(1, "TEEMS00000130S000E");
cs.setDate(2, new java.sql.Date(sdf.parse("2010-06-01").getTime()));
cs.setDate(3, new java.sql.Date(sdf.parse("2010-06-30").getTime()));
//设置空参数
cs.setNull(4, Types.INTEGER);
cs.setNull(5, Types.INTEGER);
cs.setNull(6, Types.INTEGER);
cs.setNull(7, Types.INTEGER);
cs.setNull(8, Types.INTEGER);
cs.setNull(9, Types.INTEGER);
cs.setNull(10, Types.INTEGER);
cs.setNull(11, Types.INTEGER);
//设置要输出的游标
cs.registerOutParameter(12,oracle.jdbc.OracleTypes.CURSOR);
//执行存储
cs.execute();
//获取游标的结果集,注意:索引要个输出游标的索引12一致
rs = (ResultSet)cs.getObject(12);
//遍历结果集
while(rs.next()){
System.out.println("*****************" + rs.getString(1));
}
} finally{
//关闭结果集
if(rs != null)rs.close();
//关闭存储声明
if(cs != null)cs.close();
}
}