org.jooq.impl.ParserException: Token ')' ожидается: [1:11] выберите (@i [*]: = @ i + 1) - PullRequest
1 голос
/ 23 сентября 2019

как решить эту проблему?спасибо!

ResultQuery<?> query2 = create
                    .parser()
                    .parseResultQuery("select (@i:=@i+1)");

1 Ответ

1 голос
/ 24 сентября 2019

jOOQ еще не поддерживает переменные SQL MySQL.Соответствующий запрос функции находится здесь: https://github.com/jOOQ/jOOQ/issues/2558

При обычном использовании jOOQ API вы прибегаете к использованию простого SQL-шаблона , но в настоящее время нет обходного пути при использовании синтаксического анализатора.Я создал запрос функции для реализации такого обходного синтаксиса: https://github.com/jOOQ/jOOQ/issues/9260 Это может выглядеть примерно так:

select /* [jooq field start] */ @i := @i + 1 /* [jooq field stop] */

Начиная с jOOQ 3.12, jOOQ поддерживает процедурных языков многих СУБД, включая MySQL.Вы все еще не можете использовать jOOQ для управления переменными из операторов SQL, но вы можете использовать императивное назначение переменных стиля здесь:

i.set(i.plus(1))

Обратите внимание, что во многихВ случаях, начиная с поддержки оконной функции MySQL 8 , больше нет необходимости использовать этот специфический для поставщика и не строго декларативный синтаксис стиля программирования в чистом SQL.

...