一下錯誤一般會出現在批量處理數據的過程中:
錯誤結果:
java.sql.SQLException: ORA-00604: 遞歸 SQL 級別 1 出現錯誤
ORA-01000: 超出打開遊標的最大數
ORA-01000: 超出打開遊標的最大數
出錯原因:
Java代碼在執行conn.createStatement和conn.prepareStatement時,相當於在數據庫中打開了個遊標cursor,不要在循環中放在這兩個方法。
實在要放,也不應出現conn.createStatement().executeQuery(sql); 這個語句:如下
for(...){
resultSet= conn.createStatement().executeQuery(sql); //此種方式Statement 不會及時的關閉
resultSet.close();
}
優化一點:
Statement stmt= conn.createStatement();
resultSet= stmt.executeQuery(sql);
resultSet.close();
stmt.close();//此處必須手動給它關掉,不然、批處理時就該出現上述問題了