quill(scala library)生成查询,可以纠正Oracle12,但不能纠正Oracle11

tjvv9vkg  于 2023-04-12  发布在  Scala
关注(0)|答案(1)|浏览(145)

我必须使用两个不同的数据库:

Oracle 11.2.0.3.0
Oracle 12.2.0.1.0

使用quill-jdbc-zio 4.6.0(和zio 2.0.12 scala 2.13.10),我发现quill只使用FETCH FIRST 2 ROWS生成查询,这不适用于Oracle 11。

import io.getquill._

val ctx = new SqlMirrorContext(OracleDialect, SnakeCase)

import ctx._

case class Person(id: Int, name: String, age: Int)

val m = ctx.run(query[Person].sortBy(p => p.id).take(2))

println(m.string)

输出

SELECT p.id, p.name, p.age FROM person p ORDER BY p.id ASC NULLS FIRST FETCH FIRST 2 ROWS ONLY

此查询在Oracle 12中成功执行,并引发ORA-00933:SQL命令在Oracle 11中未正确结束。
我可以对11和12使用不同的quill设置吗?或者我可以配置数据源吗?
我想对于Oracle 11,它必须像这样生成:

select id, name, age
  from ( select a.*, rownum rnum
           from ( 
                  ---------------------
                  SELECT p.id, p.name, p.age FROM person p ORDER BY p.id ASC NULLS FIRST
                  ---------------------
                ) a
          where rownum <= 2)
   where rnum >= 1

scastie

iezvtpos

iezvtpos1#

显然没有
关于Quill Contexts documentation

Oracle(quill-jdbc)

Quill支持Oracle版本12 c及更高版本,但由于许可限制,使用版本18 c XE进行测试。
以及:

Oracle(quill-jdbc-zio)

Quill支持Oracle版本12 c及更高版本,但由于许可限制,使用版本18 c XE进行测试。
以及:

Oracle(quill-jdbc-monix)

Quill支持Oracle版本12 c及更高版本,但由于许可限制,使用版本18 c XE进行测试。
Quill似乎不支持Oracle 11及以下版本。

相关问题