对于我创建的 Oracle 表 MYTABLE,我有一个列 COL1,它被声明为 NUMBER(20,3); 小数点后可以有 3 位有效数字。当我在此表上运行 cx_Oracle 游标时:
cursor.execute('SELECT COL1 FROM MYTABLE')
cursor.description
>> [('COL1', <type 'cx_Oracle.NUMBER'>, 25, 22, 20, 3, 1)]
cursor.execute('SELECT SUM(COL1) FROM MYTABLE')
cursor.description
>> [('SUM(COL1)', <type 'cx_Oracle.NUMBER'>, 127, 22, 0, 0, 1)]
在第二种情况下,我失去了精度和规模。数据本身很好(并显示带有小数位的值)。
我确实需要一种可靠的方法来告诉在这两种情况下期望什么数据类型(这样我就可以决定如何在客户端 UI 等上格式化我的数据)查看光标描述,您会相信小数点后没有有效数字在第二种情况下是允许的,并且我的 UI 逻辑下游将数字呈现为整数,这是不可取的。
这是一个错误吗,如果是这样,有没有办法在第二种情况下从光标中明确地找出我可以期待什么样的数据?