将多个引用游标从 Oracle 过程返回到 Java

Posted

技术标签:

【中文标题】将多个引用游标从 Oracle 过程返回到 Java【英文标题】:Returning multiple ref cursors from Oracle procedure to Java 【发布时间】:2012-09-19 02:57:18 【问题描述】:

在我们的 Web 应用程序中,一个模块中有 18 个屏幕。 我们的用户希望将 18 个屏幕的所有数据放在一个页面中,以便他们可以一次打印全部数据。

所以,我编写了一个 Oracle 程序,它获取所有 18 个屏幕(来自 20 - 22 个表)的数据。 这个 Oracle 过程将 13 个游标返回到我的 Java 程序。

页面的性能很好,我得到了想要的结果。

但是,将这么多游标返回给 Java 会产生任何问题吗?

【问题讨论】:

确保在获取记录后关闭java中的所有游标。 【参考方案1】:

单个会话的最大打开游标数由OPEN_CURSORS 参数控制(默认值为 50,通常扩展为数百个)。

如果按照@Polppan 的建议在完成获取游标后正确关闭游标,那么同时打开 18 个游标应该没有问题。

由于游标只是指向查询的指针,因此通过网络一次返回其中的 18 个也没有问题。

【讨论】:

以上是关于将多个引用游标从 Oracle 过程返回到 Java的主要内容,如果未能解决你的问题,请参考以下文章

如何调用返回引用游标的Oracle存储过程

如何使用c#执行返回多个游标的oracle存储过程

PL/SQL 打印出存储过程返回的引用游标

Oracle 11g:在过程中使用游标

Oracle PL SQL:比较两个存储过程返回的引用游标结果

如何从存储过程返回的游标将数据插入临时表