【发布时间】:2011-07-06 10:39:42
【问题描述】:
我在 Oracle 中有一个数据库。客户端应用程序是用 Delphi 编写的。当我在连接到数据库中的表的 DBGrid 中输入值时,我得到“ORA-12899 列的错误值太大”。错误消息中指定的列的数据类型是 varchar(6)。而我正是输入 6 位。错误还表明最大值为 6,实际为 7,这是错误的。我尝试将数据类型更改为数字,但我得到相同的错误,只是说最大值为 3,实际为 4。是Delphi 和 Oracle 有 bug 吗?我使用 ADO 进行连接。在 BeforePost 事件中没有任何内容。
【问题讨论】:
-
您确定值的末尾没有任何空格或换行符吗?或者可能是单个字符大小为两个字节的“宽”字符(如 Unicode 符号)。
-
只是数字。没有宽字符。
-
听起来像是结果绑定问题。尝试使用 Microsoft 提供程序,它的名称是 MSDAORA 而不是 OraOLEDB。您使用的是哪个版本的 Delphi?您在使用 BDE、DBExpress 还是其他工具?或者尝试使用直接 Oracle 连接而不是 ADO/OleDB(如果您的 Delphi 版本允许这样做)。
-
您使用的是哪个版本的 Delphi 和 Oracle(包括应用的更新包、补丁集和补丁)?
-
输入五位数字会发生什么?使用 SELECT DUMP(col) FROM table 查看存储了哪些字节。