我得到以下SQL异常,我不知道这个异常的根本原因是什么?我也在关闭数据库连接和语句。
java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1
ORA-01000: maximum open cursors exceeded
ORA-00604: error occurred at recursive SQL level 1
ORA-01000: maximum open cursors exceeded
ORA-01000: maximum open cursors exceeded
以下是我的代码:
while(true)
{
Statement stmt2 = conn1.createStatement();
ResultSet rs2 = null;
int rec_count=0;
rs2 = stmt2.executeQuery("select count(*) as cnt from some_table");
while(rs2.next())
{
rec_count = rs2.getInt("cnt");
}
if(rec_count>0)
{
update_qry_b_trg1 = "update some_table set to_be_triggered=1,algo_status='D',dealer_id='HD001',price_trig_date=sysdate where buy_sell = 'SELL' and ordertype = 'BNLD' and to_be_triggered = 0 and algo_status = 'P' and Mod(group_ref_no,5)="+th_id;
String final_qry = "BEGIN \n"+update_qry_b_trg1+";\n"+";\n END;";
int rows = stmt1.executeUpdate(final_qry);
stmt1.close();
}
rs2.close();
stmt2.close();
}
答案 0 :(得分:1)
无论stmt1初始化了什么,最好在finally块中关闭它。在你的情况下,你是在if条件下关闭它。如果条件没有通过,该陈述将保持开放,你将得到这个
java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1
此外,您还可以在while循环中运行,因此您需要确保关闭每个打开的Statement。