Java JOOQ和Oracle参考游标流
默认情况下,JOOQ在生成的代码中将REF CURSOR out参数包装为Java JOOQ和Oracle参考游标流,java,sql,jooq,Java,Sql,Jooq,默认情况下,JOOQ在生成的代码中将REF CURSOR out参数包装为Result 在某些情况下,对于大型报告,最好使用记录流-游标或流,而不是一次获取所有记录 我们是否有可能更改这种情况下生成的代码,或通过其他方式实现JOOQ中REF游标的记录流式传输?恐怕目前(JOOQ 3.12)不可能。该区域存在一些未决的功能请求: 添加org.jooq.Cursors扩展Iterable 添加Routine.executeLazy()以允许获取org.jooq.Cursors 根据您使用的数据库
Result
在某些情况下,对于大型报告,最好使用记录流-游标
或流
,而不是一次获取所有记录
我们是否有可能更改这种情况下生成的代码,或通过其他方式实现JOOQ中REF游标的记录流式传输?恐怕目前(JOOQ 3.12)不可能。该区域存在一些未决的功能请求:
- 添加
org.jooq.Cursors扩展Iterable
- 添加
Routine.executeLazy()
以允许获取org.jooq.Cursors
根据您使用的数据库产品,您可以将REF CURSOR
返回过程包装在表值函数中,然后使用jOOQ的ResultQuery.fetchLazy()
方法在普通的SELECT
语句中获取结果。这将适用于Oracle和PostgreSQL。我们是否可以使用以下场景使用JOOQ,而不在表函数中包装pl/sql表?使用Configuration.ConnectionProvider()
获取ConnectionProvider
。获取并释放javax.sql.Connection
,使用ConnectionProvider.Acquire()
ConnectionProvider.release()
。使用javax.sql.Connection
生成CallableStatement
。使用OracleTypes.CURSOR
注册REF cus或out参数。使用DSLContext将ResultSet
从out参数中用Cursor
包装。必须在ConnectionProvider.acquire()和ConnectionProvider.release()之间使用fetchLazy
Cursor
calls@aelor当前位置我不太确定你在这里的建议,但话说回来,堆栈溢出注释不是进行更复杂讨论的好媒介。我可以请您提出有关用户组()或github()的问题吗?