quill (scala库)生成的查询对Oracle 12正确,但对Oracle 11不正确



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

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前2行,这是不适用于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 command not proper ended in Oracle 11.

我可以为11和12使用不同设置的羽毛笔吗?或者我可以配置数据源吗?

我想对于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

显然没有


来自Quill Contexts文档:

Oracle (quill-jdbc)

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

:

Oracle (quill-jdbc-zio)

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

:

Oracle (quill-jdbc-monix)

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

显示Quill不支持Oracle 11及以下版本。

相关内容

  • 没有找到相关文章

最新更新