【发布时间】:2020-01-23 08:16:34
【问题描述】:
如何解决这个问题?谢谢!
ResultQuery<?> query2 = create
.parser()
.parseResultQuery("select (@i:=@i+1)");
【问题讨论】:
如何解决这个问题?谢谢!
ResultQuery<?> query2 = create
.parser()
.parseResultQuery("select (@i:=@i+1)");
【问题讨论】:
jOOQ 还不支持 MySQL 的 SQL 变量。相关功能请求在这里:https://github.com/jOOQ/jOOQ/issues/2558
在普通的 jOOQ API 使用中,您将求助于使用 plain SQL templating,但目前在使用解析器时没有解决方法。我创建了一个功能请求来实现这样的解决方法语法:https://github.com/jOOQ/jOOQ/issues/9260 它可能类似于:
select /* [jooq field start] */ @i := @i + 1 /* [jooq field stop] */
从 jOOQ 3.12 开始,jOOQ 支持许多 RDBMS 的procedural languages,包括 MySQL。您仍然不能使用 jOOQ 从 SQL 语句中操作变量,但您可以在此处使用 imperative style variable assignment:
i.set(i.plus(1))
请注意,在许多情况下,从 MySQL 8 的 window function support 开始,不再需要在纯 SQL 中使用这种特定于供应商且不再严格声明式编程风格的语法。
【讨论】: