【问题标题】:Is there any significance with the default values for the NUMBER datatype of an Oracle database's metadata?Oracle 数据库元数据的 NUMBER 数据类型的默认值有什么意义吗?
【发布时间】:2016-04-25 03:24:32
【问题描述】:

我对较新版本的 Oracle jdbc 驱动程序有疑问。创建表时,您可以选择将其列数据类型定义为 NUMBER,这本质上是一个浮点值,对吗?

如果是这种情况,为什么元数据(使用较新的驱动程序)返回为 DECIMAL_DIGITS 的 -127 和 COLUMN_SIZE 的 0(至少通过 SQuirreL):

这些值是否意味着什么,或者我可以假设它们实际上是 DECIMAL_DIGITS 127 和 COLUMN_SIZE 38(NUMBER 数据类型https://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements001.htm 中允许的最大值),或者有什么理由为什么这样设置这些值?我找不到任何文档说明为何或何时对 Oracle 的 jdbc 驱动程序进行此更改。

如果无论如何它会有所帮助,我遇到的问题是,在从数据库中获取元数据后,我想用 eclipse 的 xtext 保存数据,并且当值似乎为负时它会抛出一个合适的结果。我对 xtext 很陌生,不确定这是否可配置或按预期工作。

【问题讨论】:

  • 你的 JDBC 驱动是什么版本的?
  • @wero 我的 JDBC 驱动程序的版本是 11.2.0.4.0(根据驱动程序的 manifest.mf)。我相信它是他们网站上最新的。

标签: java eclipse oracle eclipse-plugin xtext


【解决方案1】:

这似乎是驱动程序问题。

JDBC 驱动程序从 11.2.0.2 升级到 11.2.0.4 stated,它修复了 INTEGER 的类似问题:

12775220 DatabaseMetaData.getColumns() 在 INTEGER 列的 COLUMN_SIZE 和 DECIMAL_DIGITS

但是问题似乎仍然存在。这是 Rod Allen 在oracle forums 上找到的解决方案:

添加JVM参数-Doracle.jdbc.J2EE13Compliant=true

也许它也可以解决您的 NUMBER 问题。否则我会建议提交错误报告。

更新:

测试了假设,使用 JVM 参数的修复在我的机器上有效。现在报告 NUMBER 字段具有 COLUMN_SIZE 38 和 DECIMAL_DIGITS 0。 定义为 NUMBER(n,m) 的字段无论有无 JVM 参数都不会出现问题。

【讨论】:

  • @wmgeiger101x 似乎可以使用 JVM 参数测试启动松鼠。
  • 所以这只是一种解决方法,对吗?该错误仍然存​​在于 NUMBER 数据类型的当前驱动程序中?
猜你喜欢
  • 2012-05-26
  • 2023-03-29
  • 2011-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
  • 2022-11-21
  • 2011-10-06
相关资源
最近更新 更多