pb11.5的调试正常,编译成EXE后运行报错。

时间:2022-05-28 23:45:45
PB11.5的DW连接oracle11g的数据库
需要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


引用 1 楼 lzp_lrp 的回复:
列的精度超长了,举例:数据库里为varchar2(10),你录入了超过10个字符,或者数据库里字段为number(4),你录入了5位数

非常奇怪的问题,同样的程序,同样的数据库结构,但一个在oracle10g上、一个在oracle11g上
在oracle10g的这个执行没有问题
就是在oracle11g的这个上执行就报错。
所以精度的问题很小,我核对过了,没有超过字段的限制。
郁闷大发了。

#4


楼主,有没有你数据库内容刚好在11g 与10g 上有所不同,是否正好有那个字段数据类型的精度在这两个版本上有所不同啊

#5


引用 4 楼 dcy0927 的回复:
楼主,有没有你数据库内容刚好在11g 与10g 上有所不同,是否正好有那个字段数据类型的精度在这两个版本上有所不同啊

我把2个的表结构都打开后比较过,绝对没有差别。

#6


在后台把这个表里字段的长度增加到2000,数值在输入时只输入0

保存一下再试试

#7


或者你直接自己写一个update语句,在sqlplusw里技术一下试试

#8


引用 6 楼 lzp_lrp 的回复:
在后台把这个表里字段的长度增加到2000,数值在输入时只输入0
保存一下再试试

非常谢谢版主的关注。

我也把DW的原始和更新前的数据saveas了,分析了一些,没有超过精度。
但是我刚刚在写日志记录的时候发现
把数据重新取出来一下,不做修改。就能保存了。
也不知道是不是BUG。
哎,搞死人了。

#9


结贴了,谢谢大家的关注和帮忙。

#1


列的精度超长了,举例:数据库里为varchar2(10),你录入了超过10个字符,或者数据库里字段为number(4),你录入了5位数

#2


可以用sqlmonitor看一下你执行的update里的值,然后对比一下数据库,应该就能找到问题所在

#3


引用 1 楼 lzp_lrp 的回复:
列的精度超长了,举例:数据库里为varchar2(10),你录入了超过10个字符,或者数据库里字段为number(4),你录入了5位数

非常奇怪的问题,同样的程序,同样的数据库结构,但一个在oracle10g上、一个在oracle11g上
在oracle10g的这个执行没有问题
就是在oracle11g的这个上执行就报错。
所以精度的问题很小,我核对过了,没有超过字段的限制。
郁闷大发了。

#4


楼主,有没有你数据库内容刚好在11g 与10g 上有所不同,是否正好有那个字段数据类型的精度在这两个版本上有所不同啊

#5


引用 4 楼 dcy0927 的回复:
楼主,有没有你数据库内容刚好在11g 与10g 上有所不同,是否正好有那个字段数据类型的精度在这两个版本上有所不同啊

我把2个的表结构都打开后比较过,绝对没有差别。

#6


在后台把这个表里字段的长度增加到2000,数值在输入时只输入0

保存一下再试试

#7


或者你直接自己写一个update语句,在sqlplusw里技术一下试试

#8


引用 6 楼 lzp_lrp 的回复:
在后台把这个表里字段的长度增加到2000,数值在输入时只输入0
保存一下再试试

非常谢谢版主的关注。

我也把DW的原始和更新前的数据saveas了,分析了一些,没有超过精度。
但是我刚刚在写日志记录的时候发现
把数据重新取出来一下,不做修改。就能保存了。
也不知道是不是BUG。
哎,搞死人了。

#9


结贴了,谢谢大家的关注和帮忙。