【发布时间】: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