如何从存储过程中获取嵌套游标 - Java & Oracle

Posted

技术标签:

【中文标题】如何从存储过程中获取嵌套游标 - Java & Oracle【英文标题】:How to get nested cursor from a stored procedure - Java &Oracle 【发布时间】:2021-04-08 17:28:44 【问题描述】:

我有一个返回游标的存储过程,并且该游标包含另一个游标(下面示例中的 col_ch)。是这样的(正如我在 Java 代码中看到的那样)

过程 my_proc ( i_val IN VARCHAR ,i_cont IN 整数 ,o_out 输出光标); 在我的 Java 应用程序中,我在 o_out 的调试值中看到

身份证 t_id OracleResultSetImpl 类型的col_ch

如何获得 col_ch 的值? 我有一个扩展 StoredProcedure 的简单 bean,并且我已经声明了两个输入参数和一个输出参数(光标:o_result 在调试时显示了提到的字段。 谢谢并感谢您的帮助

【问题讨论】:

打开外部游标,从外部游标读取第一行,从该行的列读取内部游标,从内部游标中获取下一行(我相信它应该已经打开了,但我可能弄错了,您需要打开它),读取列,从内部游标重复并读取更多行,直到您处理完该内部游标中的所有行,然后从外部游标重复读取下一行和遍历其内部游标,直到处理完所有行,最后关闭外部游标(所有内部游标也将隐式关闭)。 确实有效并且对我有帮助。谢谢并感谢您的快速回复 【参考方案1】:

    打开外部光标;

    从外部光标读取第一行。

    从该行的列读取内部光标;

    a) 我认为它应该已经打开了,但我可能弄错了,您需要打开它; b) 从内部游标中获取下一行; c) 从内部游标的那一行读取列; d) 重复并从内部游标读取更多行和列,直到处理完该内部游标中的所有行;那么

    重复从外部游标读取下一行并遍历其内部游标,直到处理完所有行;和

    最后,关闭外部游标(所有内部游标也将被隐式关闭)。

【讨论】:

以上是关于如何从存储过程中获取嵌套游标 - Java & Oracle的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 存储过程,获取使用游标查询的结果集

一个Sql Server 的游标与循环嵌套的存储过程用例

如何在oracle中使用嵌套游标遍历同一张表[关闭]

如何将结果集作为输入从java传递到oracle存储过程

java中如何获取oracle存储过程返回的多个值。

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