需要DW更新数据库
调试的时候或者用PB编程工具运行源码时候,均能正常更新。
但是在编译成exe后,就在源码的同级目录下,会报错。
错误信息:
ORA-01438: 值大于为此列指定的允许精度
No changes made to database.
UPDATE "table1" SET "col1" = :1, "col2" = :2, "col3" = :3, "col4" = :4, "col5" = :5, "col6" = :6 WHERE "col7" = :7
9 个解决方案
#1
列的精度超长了,举例:数据库里为varchar2(10),你录入了超过10个字符,或者数据库里字段为number(4),你录入了5位数
#2
可以用sqlmonitor看一下你执行的update里的值,然后对比一下数据库,应该就能找到问题所在
#3
非常奇怪的问题,同样的程序,同样的数据库结构,但一个在oracle10g上、一个在oracle11g上
在oracle10g的这个执行没有问题
就是在oracle11g的这个上执行就报错。
所以精度的问题很小,我核对过了,没有超过字段的限制。
郁闷大发了。
#4
楼主,有没有你数据库内容刚好在11g 与10g 上有所不同,是否正好有那个字段数据类型的精度在这两个版本上有所不同啊
#5
我把2个的表结构都打开后比较过,绝对没有差别。
#6
在后台把这个表里字段的长度增加到2000,数值在输入时只输入0
保存一下再试试
保存一下再试试
#7
或者你直接自己写一个update语句,在sqlplusw里技术一下试试
#8
非常谢谢版主的关注。
我也把DW的原始和更新前的数据saveas了,分析了一些,没有超过精度。
但是我刚刚在写日志记录的时候发现
把数据重新取出来一下,不做修改。就能保存了。
也不知道是不是BUG。
哎,搞死人了。
#9
结贴了,谢谢大家的关注和帮忙。
#1
列的精度超长了,举例:数据库里为varchar2(10),你录入了超过10个字符,或者数据库里字段为number(4),你录入了5位数
#2
可以用sqlmonitor看一下你执行的update里的值,然后对比一下数据库,应该就能找到问题所在
#3
非常奇怪的问题,同样的程序,同样的数据库结构,但一个在oracle10g上、一个在oracle11g上
在oracle10g的这个执行没有问题
就是在oracle11g的这个上执行就报错。
所以精度的问题很小,我核对过了,没有超过字段的限制。
郁闷大发了。
#4
楼主,有没有你数据库内容刚好在11g 与10g 上有所不同,是否正好有那个字段数据类型的精度在这两个版本上有所不同啊
#5
我把2个的表结构都打开后比较过,绝对没有差别。
#6
在后台把这个表里字段的长度增加到2000,数值在输入时只输入0
保存一下再试试
保存一下再试试
#7
或者你直接自己写一个update语句,在sqlplusw里技术一下试试
#8
非常谢谢版主的关注。
我也把DW的原始和更新前的数据saveas了,分析了一些,没有超过精度。
但是我刚刚在写日志记录的时候发现
把数据重新取出来一下,不做修改。就能保存了。
也不知道是不是BUG。
哎,搞死人了。
#9
结贴了,谢谢大家的关注和帮忙。