我必须使用两个不同的数据库:
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
1条答案
按热度按时间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及以下版本。