我有一个以AAA列命名的表:
ED_RATE NOT NULL NUMBER(26,6)
Run Code Online (Sandbox Code Playgroud)
我想使用这个语句来增加它的长度:
ALTER TABLE ioa_invoice_line MODIFY FIXED_RATE NUMBER(26,15)
Run Code Online (Sandbox Code Playgroud)
现在执行此操作时,我收到错误,请告知我如何克服这个问题
ORA-01440:要修改的列必须为空才能降低精度或比例
- 00000 - 要修改的列必须为空才能降低精度或比例
Tim*_*sen 10
您无法降低Oracle(参考)中数字列的精度.你的问题有趣的是旧的精度NUMBER(26,6)和新的精度NUMBER(26,15).这使得第一眼看上去两列的精度总数相同.我相信这可能是你困惑的根源.但是,第一种情况有6位小数的精度,而第二种情况有15位.将9位精度添加到列中可能会以小数点左侧的精度为代价.因此,这可能会导致您的某些数据被截断.
如果你想添加的小数精度9位,我相信你将不得不也增加总精度.因此,以下应该有效:
ALTER TABLE ioa_invoice_line MODIFY FIXED_RATE NUMBER(35,15)
^^ ^^ add 9 to both
Run Code Online (Sandbox Code Playgroud)
请注意,精度限制为38,您的需求在此限制范围内.
| 归档时间: |
|
| 查看次数: |
7920 次 |
| 最近记录: |