我开始了解以下内容SQL exception
,但我不知道此异常的根本原因是什么?我也关dbconnection
和prepared statement
太。那是什么问题
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
以下是我正在使用的代码。我的代码有什么问题吗?
for (Entry<Integer, LinkedHashMap<Integer, String>> entry : GUID_ID_MAPPING.entrySet()) {
pstatement = db_connection.prepareStatement(PDSLnPConstants.UPSERT_SQL); // create a statement
pstatement.setInt(1, entry.getKey());
pstatement.setString(2, entry.getValue().get(PDSLnPConstants.CGUID_ID));
pstatement.setString(3, entry.getValue().get(PDSLnPConstants.PGUID_ID));
pstatement.setString(4, entry.getValue().get(PDSLnPConstants.SGUID_ID));
pstatement.setString(5, entry.getValue().get(PDSLnPConstants.UID_ID));
pstatement.setString(6, entry.getValue().get(PDSLnPConstants.ULOC_ID));
pstatement.setString(7, entry.getValue().get(PDSLnPConstants.SLOC_ID));
pstatement.setString(8, entry.getValue().get(PDSLnPConstants.PLOC_ID));
pstatement.setString(9, entry.getValue().get(PDSLnPConstants.ALOC_ID));
pstatement.setString(10, entry.getValue().get(PDSLnPConstants.SITE_ID));
pstatement.executeUpdate();
}
} catch (SQLException e) {
getLogger().log(LogLevel.ERROR, e);
} finally {
if (pstatement!= null) {
try {
pstatement.close();
pstatement = null;
} catch (SQLException e) {
getLogger().log(LogLevel.ERROR, e.getMessage(), e.fillInStackTrace());
}
}
if (db_connection!= null) {
try {
db_connection.close();
db_connection = null;
} catch (SQLException e) {
getLogger().log(LogLevel.ERROR, e.getMessage(), e.fillInStackTrace());
}
}
我认为PreparedStatement
应该通过调用将定义从循环中拉出并在循环内重用clearParameters
:
pstatement = db_connection.prepareStatement(PDSLnPConstants.UPSERT_SQL); // create a statement
for (Entry<Integer, LinkedHashMap<Integer, String>> entry : GUID_ID_MAPPING.entrySet()) {
pstatement.setInt(1, entry.getKey());
pstatement.setString(2, entry.getValue().get(PDSLnPConstants.CGUID_ID));
pstatement.setString(3, entry.getValue().get(PDSLnPConstants.PGUID_ID));
pstatement.setString(4, entry.getValue().get(PDSLnPConstants.SGUID_ID));
pstatement.setString(5, entry.getValue().get(PDSLnPConstants.UID_ID));
pstatement.setString(6, entry.getValue().get(PDSLnPConstants.ULOC_ID));
pstatement.setString(7, entry.getValue().get(PDSLnPConstants.SLOC_ID));
pstatement.setString(8, entry.getValue().get(PDSLnPConstants.PLOC_ID));
pstatement.setString(9, entry.getValue().get(PDSLnPConstants.ALOC_ID));
pstatement.setString(10, entry.getValue().get(PDSLnPConstants.SITE_ID));
pstatement.executeUpdate();
pstatement.clearParameters();
}
您可能还想研究批处理(addBatch
)。如果要测试,则可能需要稍等片刻以清理现有的“打开”游标。
我已从安装了Oracle 11g Express Editionhttp://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index-083047.html还安装了SQL Developer,但当我尝试从Developer连接到Oracle数据库时(我尝试创建新连接),会出现
问题内容: 使用Oracle 11g第2版,以下查询给出ORA-01790:表达式必须具有与相应表达式相同的数据类型: 该错误表明UNION ALL的两个子查询的数据类型返回不同的数据类型。 即使我在每个子查询中都将其转换为TIMESTAMP,也将收到相同的错误。 我想念什么? 编辑: 我不是在寻找CONNECT BY替换。 问题答案: 我认为,对于带有日期或时间戳列的查询,“递归子查询分解”在1
像其它应用程序一样,由 NSIS 生成的安装程序执行时,会返回错误级别。如果你要用其它应用程序或安装程序调用一个 NSIS 安装程序,那么检查错误级别就会很有用。 0 - 正常执行 (没有错误) 1 - 安装被用户终止 (取消按钮) 2 - 安装由脚本终止 从 NSIS 2.01 以后,你可以使用 SetErrorLevel 自行设置错误级别。 需要注意的是卸载程序会把它本身复制到临时文件夹并从那
你好 上面的查询包括: WITH子句-本条款的目的是从2011年至2016年间购买物品的客户中识别不同的。 第一次查询-查询的主要目的是检查上述WITH子句中是否存在任何选定的。此外,该查询还应检查所选的是否与特定的匹配,并在名为的列中将其标记为 第二次查询-此查询执行的操作与第一次查询几乎相同。唯一的区别是,它在名为“DRIVE_TYPE”的列中将标记为 您可能已经注意到,在这两个查询中,都有一
我正在尝试使用SQLDeveloper远程连接到Oracle 12c数据库。为了从另一台计算机远程连接,在运行Oracle的计算机上,我在Windows 7防火墙中打开了一个端口。这部分工作了,但由于此错误ORA-12505,监听器现在不让我进入。它说它无法识别我在远程计算机中尝试与SQLDeveloper连接时提供的SID。我甚至尝试将服务名称设置为“编辑器”,但仍然一无所获。 以下是远程计算机
问题内容: 我有一个Comment表,其中有一个CommentID和ParentCommentID。我正在尝试获取评论的所有子级的列表。到目前为止,这是我到目前为止尚未完成的测试。 2个问题: 有什么明显的方法可以改善这一点吗?(此外,也许还可以使用CTE在sql中创建视图。) 我怎么不能只给一个IEnumerable屈服呢? 无论如何,在这种情况下可以使用SelectMany吗? 问题答案: 我
问题内容: 递归的最大级别是多少?如何在Python中更改它? 问题答案: 默认深度为1000层,您可以使用模块中的功能进行更改。 警告: 请注意,如果由于堆栈空间有限而使性能更高,某些操作系统可能会开始出现问题。
我在一个表上在线重新定义了表。它工作得很好,但后来当我试图截断表时,我得到了这个错误。 当我移动表格时,我也会得到同样的错误: 错误的原因是什么?