0
我们有一个SQLJ文件,我们在其中指定一个迭代器来从表中提取多个记录。目前,我们试图从一张中间表格上传300条记录到实际表格中,每次从300条记录中取出50条记录。通过SQLJ文件关闭OPEN-RECURSIVE和DICTIONARY LOOKUP CURSOR CACHED游标
我们正面临的问题是,每个提取都创建了50个迭代器,其中1个游标是DICTIONARY LOOKUP CURSOR CACHED和49个是OPEN-RECURSIVE。在遍历迭代器后,我们在finally块中关闭了一个关闭对象,但是这会关闭一个游标,我们剩下48个OPEN-RECURSIVE游标和1个DICTIONARY LOOKUP CURSOR CACHED。我想知道是否有任何具体的方法来关闭所有这些。我试图在网络上看,但在这种情况下并没有真正遇到。
#sql public static iterator UploadDetailsList(BigDecimal ID, String FUNCTION_ID,String TABLE_NAME)
#sql public static iterator UploadDetailsListAnother(BigDecimal ID, String FUNCTION_ID,String TABLE_NAME)
public List<UploadDto> getRecords(UploadDto newDto,int fromRowNo){
//fromRowNo is sent as 0
int maxResults=50;
int toRowNum= fromRowNo + maxResults;
UploadDetailsList uploadDetailsList=null;
UploadDetailsListAnother uploadDetailsListAnother=null;
try{
#sql uploadDetailsList = {SELECT ID,FUNCTION_ID,TABLE_NAME FROM UPLOAD_TABLE WHERE STATUS= 'U' AND ROWNUM BETWEEN :fromRowNo AND :toRowNum};
while(uploadDetailsList.next()){
//populate details to Dto object
try{
#sql uploadDetailsListAnother = {SELECT ID,FUNCTION_ID,TABLE_NAME FROM UPLOAD_TABLE WHERE STATUS= 'U' AND ROWNUM BETWEEN :fromRowNo AND :toRowNum};
while(uploadDetailsListAnother.next()){
//populate details to Dto object
}
}
catch(Exception e){
//print error
}
}
}
catch(Exception e){
//print error
}
finally{
try{
dbg("Inside finally in List<UploadDto> getRecords(UploadDto newDto,int fromRowNo)");
if(uploadDetailsList != null){
dbg("Closing uploadDetailsList");
uploadDetailsList.close();
}
if(uploadDetailsListAnother != null){
dbg("Closing uploadDetailsListAnother");
uploadDetailsListAnother.close();
}
}
catch(Exception e){
//print error
}
}
}
有人可以让我知道我哪里出错或有什么我可能会失踪?