首页 > 解决方案 > JOOQ 和 Oracle REF CURSOR 流式传输

问题描述

默认情况下,JOOQ 将 REF CURSOR 包装出参数,就像Result<Record>在生成的代码中一样。

在某些情况下——对于大型报告,最好有记录流——Cursor<Record>或者Stream<Record>一次获取所有记录。

我们是否有可能更改此案例的生成代码或Record通过其他方式在 JOOQ 中实现 REF CURSOR 的流式传输?

标签: javasqljooq

解决方案


恐怕这是目前(jOOQ 3.12)不可能的。该区域有一些待处理的功能请求:

  • #4503添加org.jooq.Cursors extends Iterable<Cursor<Record>>
  • #4472添加Routine.executeLazy()以允许获取org.jooq.Cursors

但是,根据您使用的数据库产品,您可以将返回过程包装在一个表值函数中,并使用 jOOQ 的方法REF CURSOR在普通语句中获取结果。这适用于 Oracle 和 PostgreSQL。SELECTResultQuery.fetchLazy()


推荐阅读