【问题标题】:Delphi getting Oracle error ORA-12899 Error value too large for the columnDelphi 获取 Oracle 错误 ORA-12899 列的错误值太大
【发布时间】: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 查看存储了哪些字节。

标签: oracle delphi ora-12899


【解决方案1】:

对Delphi一无所知,会不会是您的网格数据单元格被解释为数字并且为符号保留了空间?

编辑:

如果您输入 6 个字符但包含 1 个或多个字母,会发生什么情况?

【讨论】:

  • 一个varchar字段被映射到一个Delphi数据集中的一个字符串字段,并且网格使用底层字段类型,除非开发者改变了什么。
猜你喜欢
  • 2023-03-23
  • 2016-09-15
  • 2015-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
  • 1970-01-01
  • 2018-11-10
相关资源
最近更新 更多