使用Spring批处理进度求解最大长度或精度

问题描述:

我正在使用spring批处理,并且需要从使用进度数据库的遗留系统查询数据。使用Spring批处理进度求解最大长度或精度

但是我与此异常java.sql.SQLException中:[DataDirect的] [OpenEdge JDBC驱动程序] [OpenEdge]柱的Ag-OBS-conf的在表PUB.Agenda具有值超过其最大长度或精度。

我能够在select中使用SUBSTR部分解决这个问题,但是我需要数据库中的所有数据。

而我不能以任何方式更改数据库。

任何人都可以给我一个想法如何解决这个问题吗?

谢谢

OpenEdge数据库将所有数据存储为可变长度。除了声明的“SQL Width”属性之外,应用程序非常普遍地“overstuff”字段,这是导致您看到的错误的原因。

在OpenEdge 11.6之前,使用dbtool是调整SQL宽度的标准方法。它是快速,安全,有效的:

-SQLWidthUpdate ON

,可以自动修复字符的SQL宽度:

http://knowledgebase.progress.com/articles/Article/P24496

从OpenEdge 11.6版本中引入一个新的数据库启动参数启动数据类型。

有关这一新功能

更多信息可以在这里找到:

https://community.progress.com/community_groups/openedge_rdbms/f/18/t/19534

也有在11.6+一些选项来自动截断返回的数据,如果这是你喜欢什么:

http://knowledgebase.progress.com/articles/Article/How-to-enable-Authorized-Data-Truncation-in-a-JDBC-or-ODBC-connection/p

+0

它可能会工作,但我没有任何访问数据库。通过代码,我可以解决这个问题吗? – user2888055

+0

您通常会要求DBA运行dbtool--它应该是SQL与OpenEdge数据库一起使用的任何地方的例程。如果本地管理员拒绝,那么您可以使用SUBSTR方法解决此问题,或者,如果通过遵循最后一个链接中的JDBC配置说明,db为11.6或更高。 –