我正在使用代码生成器!
我需要执行以下查询:
SELECT sbcm_ref.process_time_reports_direct_buf_record((SELECT tr.time_reports_buf_id
FROM sbcm_buf.time_reports_direct_buf tr ORDERBY time_reports_buf_id desc limit 1
这是我的命令
DSL.using(connection).select(Routines.processTimeReportsDirectBufRecord(select(TIME_REPORTS_DIRECT_BUF.TIME_REPORTS_BUF_ID).from(TIME_REPORTS_DIRECT_BUF).orderBy(TIME_REPORTS_DIRECT_BUF.TIME_REPORTS_BUF_ID.desc()).limit(1).fetch())).fetch();
错误在哪里?
谢谢!
您可以通过使用DSL.field(Select)
:将任何Select<R extends Record1<T>>
包装为Field<T>
ctx.select(Routines.processTimeReportsDirectBufRecord(field(
select(TIME_REPORTS_DIRECT_BUF.TIME_REPORTS_BUF_ID)
.from(TIME_REPORTS_DIRECT_BUF)
.orderBy(TIME_REPORTS_DIRECT_BUF.TIME_REPORTS_BUF_ID.desc())
.limit(1)
))).fetch();
另请参阅有关标量子查询的手册部分。然而,在这种特殊情况下,你不需要它。为什么不直接写:
ctx.select(Routines.processTimeReportsDirectBufRecord(
max(TIME_REPORTS_DIRECT_BUF.TIME_REPORTS_BUF_ID)
))
.from(TIME_REPORTS_DIRECT_BUF)
.fetch();