Приведенный ниже код получает refcursor от SP, выполняет итерацию и добавление в ArrayList. код отлично работает в тестовой среде, но в более высокой среде он застревает в первом операторе отладки в то время как l oop. Исключений не обнаружено. Если я выполняю SP самостоятельно в SqlDeveloper, то он возвращает мне 1 запись. Может кто-нибудь помочь найти проблему?
Connection connection = null;
ArrayList viewArrayList = new ArrayList();
int sqlErrorNumber = 0;
String sqlErrorMessage = "";
CallableStatement cs = null;
ResultSet rs1 = null;
int cnt = 1;
ArrayList viewArrayList = new ArrayList();
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
connection = DriverManager.getConnection(
jdbcURL, jdbcUserName,
jdbcPassword);
cs = connection.prepareCall("begin PROC_VIEW_AC(?,?,?); end;");
cs.registerOutParameter(cnt++, OracleTypes.INTEGER);
cs.registerOutParameter(cnt++, OracleTypes.VARCHAR);
cs.registerOutParameter(cnt++, OracleTypes.CURSOR);
cs.execute();
cnt=1;
sqlErrorNumber = cs.getInt(cnt++);
sqlErrorMessage = cs.getString(cnt++);
if(sqlErrorNumber == 0)
{
rs1 = (ResultSet) cs.getObject(cnt++);
System.out.println("In method11 rs1 --- "+rs1.toString());
while(rs1.next()){
System.out.println("Inside while loop"+rs1.getFetchSize()+"---");
DocGenModel caseMod = (DocGenModel) new BeanProcessor().toBean(rs1, DocGenModel.class);
System.out.println("Inside while loop after cast .. ");
viewArrayList.add(caseMod);
System.out.println("Inside while loop after adding to arraList");
}
System.out.println("In method11 end of while --- ");
}
else{
System.out.println("Error in PROC_VIEW_AC Procedure :"+sqlErrorMessage);
}
System.out.println("viewArrayList size ... "+viewArrayList.size());
} catch (Exception e) {
System.out.println("Exception is "+e.getMessage());
}
finally{
if(null != rs1) {try{rs1.close(); rs1=null;}catch(Exception e){}}
if(null != cs) {try{cs.close(); cs=null;}catch(Exception e){}}
if(null != connection) {try{connection.close(); connection=null;}catch(Exception e){}}
}
return viewArrayList;
rs1.getString (1) -> дает значение 1-го столбца. Так что, похоже, получить запись, но не в состоянии набрать Cast для docGenModel.