String sql="sql语句1" //sql语句1
ResultSet rst=st.executeQuery(sql);
while(rst.next()){
qsql="sql语句1中的查询结果作为sql语句2的查询条件" //sql语句2
ResultSet qrst=st.executeQuery(qsql);
if(qrst.next()){
//如果有数据获得数据
}
}
/*我的预期事while循环会找出所有的结果,但是while只执行了一次就结束了循环,原因是qrst把rst里边的内容给覆盖了,意不意外?惊不惊喜?解决办法就是先把rst中循环出的数据保存在list中,然后循环list,也就是把两个ResultSet 分开写*/
部分源码:
private void dealLocalPRT(){
log.info("=====================批量处理个人本地查询开始=====================");
Connection conn = DBUtil.getJndiConnection();
Statement st=null;
Statement ust=null;
String sql="select p.pk,p.certype,p.cercode,p.queryreason,p.valid_days,p.vertype from per_credit_rep_info p where p.dealresult in ('0', '4') and p.wf_appr_sts = '997'and p.pboc_loc_rpt = '02'";
List<String[]> list=new ArrayList<String[]>();
try {
st=conn.createStatement();
ust=conn.createStatement();
ResultSet rst=st.executeQuery(sql);
while(rst.next()){
String pk=rst.getString(1);
String certype= rst.getString(2);
String cercode= rst.getString(3);
String queryreason= rst.getString(4);
String validDays= rst.getString(5);
String vertype=rst.getString(6);
if("31".equals(vertype)){
log.info("流水号为:"+pk+",为异议版无法解析!");
continue;
}
String[] pers=new String[5];
pers[0]=pk;
pers[1]=certype;
pers[2]=cercode;
pers[3]=queryreason;
pers[4]=validDays;
list.add(pers);
}
log.info("根据sql【"+sql+"】查询出批量处理个人本地查询记录为size="+list.size());
for(int i=0;i<list.size();i++){
log.info("开始处理第【"+(i+1)+"】笔申请,共【"+list.size()+"】笔申请");
String[] pers=list.get(i);
String qsql="select * from (select * from per_credit_rep_info p where 1 = 1 and certype ='"+pers[1]+"' and cercode ='"+pers[2]+"' and queryreason ='"+pers[3]+"' and to_date(substr(occurdate,1,10),'yyyy-mm-dd') >= trunc(sysdate)-'"+pers[4]+"' and DEALRESULT in ('0', '4', '9') and PBOC_LOC_RPT = '01' order by p.occurdate desc) where rownum=1";
ResultSet qrst=st.executeQuery(qsql);
if(qrst.next()){
String reportId=qrst.getString("report_id");
String repinfodir=qrst.getString("repinfodir");
String dealresult=qrst.getString("dealresult");
ust.addBatch("update per_credit_rep_info set report_id='"+reportId+"',repinfodir='"+repinfodir+"',dealresult='"+dealresult+"' where pk='"+pers[0]+"'");
}
}
ust.executeBatch();
} catch (Exception e) {
log.error("批量处理个人本地查询出现错误:"+e.getMessage());
}finally{
if(conn != null)
DBUtil.releaseConnectoin(conn);
}
log.info("=====================批量处理个人本地查询结束=====================");
}