JOOQ 与 Oracle19c:DSL 正确的 Oracle 版本

JOOQ With Oracle19c: DSL Correct Oracle Version

我正在将 JOOQ 与 Oracle 19 一起使用。在 运行 使用 DSLContext 的简单查询中,我应该使用 Oracle 还是 Oracle18C?两个好像都行,只是好奇

 DSLContext create = DSL.using(conn, SQLDialect.ORACLE);

SQLDialect class 将两件事合二为一:

方言家族

SQLDialect.ORACLE 是 Oracle 数据库的方言系列。它与例如非常不同SQLDialect.MYSQL 方言家族。

它也可以用作SQL方言,在这种情况下它始终对应于当前支持的最新SQL方言。在 jOOQ 3.15 的情况下,那将是 SQLDialect.ORACLE21C,因此 ORACLEORACLE21C 的行为是相同的。

一旦假设的 Oracle 23c 发布,一旦 jOOQ 支持它,家族 ORACLE 将对应方言 ORACLE23C

方言

jOOQ 中版本化的 SQL 方言对应于它们各自的 Oracle 数据库版本。为了在 Oracle 19c 上获得最佳结果,请使用 SQLDialect.ORACLE18C。未添加 ORACLE19C 方言,因为 jOOQ 尚未添加任何 19c 特定功能支持。

这种方言将继续在 Oracle 18c(和 19c)上工作,因为它是用于在这些 Oracle 版本上集成测试 jOOQ 的方言。例如,即使 Oracle 决定支持 23c 中的标准 SQL BOOLEAN 类型(希望如此),然后 SQLDialect.ORACLE18C 将继续模拟该类型,而新的 SQLDialect.ORACLE23C(和 SQLDialect.ORACLE 方言系列)将生成布尔值表达式。