使用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+一些选项来自动截断返回的数据,如果这是你喜欢什么:
它可能会工作,但我没有任何访问数据库。通过代码,我可以解决这个问题吗? – user2888055
您通常会要求DBA运行dbtool--它应该是SQL与OpenEdge数据库一起使用的任何地方的例程。如果本地管理员拒绝,那么您可以使用SUBSTR方法解决此问题,或者,如果通过遵循最后一个链接中的JDBC配置说明,db为11.6或更高。 –