我有一个PostgreSQL函数,它返回一组UDT(即它的函数签名包括RETURNS SETOF <UDT name>
)。我正试图在jOOQ中运行以下查询:
SELECT col1, col2
FROM custom_function(param1, param2)
jOOQ编解码器已经生成了CCD_ 2的例程。但是,我不能在from()
子句中使用该例程,因为该例程返回Field
,而from()
期望Table
。
在jOOQ中运行上述查询的最佳方式是什么?我知道我可以用纯SQL编写查询,但我想看看是否有更好的方法。
对返回SETOF
类型的PostgreSQL函数的显式支持尚未实现,但它正在实现:
- https://github.com/jOOQ/jOOQ/issues/3376
不过,即将推出的jOOQ 3.5.0将支持表值函数,即返回TABLE
类型的表:
- https://github.com/jOOQ/jOOQ/issues/3375
在这些功能得到支持之前,您最好使用纯SQL,例如:
DSL.using(configuration)
.select(DSL.field("col1"), DSL.field("col2"))
.from("custom_function(param1, param2)")
.fetch();