【发布时间】:2012-07-19 16:30:45
【问题描述】:
嘿嘿, 我在我的 web 应用程序的 java 类中调用存储过程,有一些报告需要花费大量时间来呈现 jsp/HTML,我还使用存储过程查询进行了检查,它在 oracle 浏览器中执行只需 2 秒.我检查了我的 SP 调用代码,发现我的结果集获取时间非常短,但是当尝试使用 While(rst.next) 迭代结果集时,在 while 循环中打印 SOP 几乎需要 3 分钟,我怀疑 ret.next() 一定有问题, 我的代码如下,
Connection connection = null;
CallableStatement stmt = null;
ResultSet rst = null ;
connection = DBConnector.getConnection();
stmt = connection.prepareCall("{call MIS_GSGR_ASON.MIS_DIVNETSALE_ASON(?,?,?,?,?,?,?,?,?)}");
stmt.setString(1,START_DT);
stmt.setString(2,END_DT);
stmt.setString(3,DIVISION);
stmt.setString(4,LOC_ID);
stmt.setInt(5,USER_GRP);
stmt.setInt(6,FIELD_ID);
stmt.setInt(7,Integer.parseInt(PERIOD_ID));
stmt.setString(8,zone);
stmt.registerOutParameter(9+INC,OracleTypes.CURSOR);
stmt.execute();
rst = (ResultSet) stmt.getObject(9+INC);
System.out.println("Got resultset . . . .");
data = new ArrayList<MainActionAll>();
while(rst.next()){
System.out.println("In loop");}
任何帮助都将得到高度评价,请帮助我 谢谢,阿莫尔
【问题讨论】:
-
我不知道您在结果集迭代中通常会做什么,但是在紧密循环中打印到控制台的简单行为本身非常昂贵
-
我只是想打印我在 while 循环中插入的 S.O.P,在获得结果集后我无法打印该语句,它需要太多时间才能在控制台上打印
-
你可以用注释掉控制台的输出来计时你的代码吗?