【问题标题】:Oracle DB returning negative scale and 0 precision using JDBCOracle DB 使用 JDBC 返回负比例和 0 精度
【发布时间】:2018-02-14 13:15:25
【问题描述】:

我在我的 oracle DB 的 NUMBER 类型的表中创建了一个列,但在创建此列时,我将精度和比例留空。

当我使用 java.sql 的ResultSetMetadata 类获取列信息时,我返回列精度为 0,小数位数为 -127。

Oracle 文档是这么说的

没有精度和小数位数指示符指定了 Oracle 数字的最大范围和精度。

但是在这种情况下这意味着什么?返回的精度如何等于 0,而小数位数为负数?

我应该以不同的方式获得比例和精度吗?

【问题讨论】:

  • 谢谢!这确实为这个问题提供了一些启示,但我仍然对为什么返回的比例是 -127 感到困惑。
  • 据我所知,Oracle用-127作为一个信号,表示它不是一个正常的刻度,而是有特殊的含义。
  • 我用Postgres driver 对这个问题做了一些挖掘,当没有明确指定时它返回0,0。这允许服务器随意存储它(并且有足够的字节),但它也会导致元数据给出需要特殊处理的值。
  • 根据我的经验 -127 存储在 all_tab_columns.data_precision 中(这是驱动程序为 DECIMAL_DIGITS 返回的内容),当列创建为 number(未指定任何大小或精度)时。

标签: java oracle jdbc precision


【解决方案1】:

当未指定比例时,Oracle 返回 -127。这在JavaDoc中有所提及。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    相关资源
    最近更新 更多