在OpenEdge ABL / Progress 4GL中,可以使用FORMAT定义字段,但这只是要显示的默认格式。因此,FORMAT’X(10)’的CHARACTER字段可以存储数千个……
如果它实际上是您要调整以匹配数据的字符格式,我想您可以做的是使用dbtool调整所有字段的SQL宽度,然后将字符格式设置为SQL宽度的一半。
“dbtool”将扫描数据库并查找宽度超过“sql width”的字段。默认情况下,它是为字符字段定义的格式的2倍。
https://knowledgebase.progress.com/articles/Article/P24496/
当然,它必须扫描表格,以便它可能不符合您的“比表扫描更有效”的标准。 FWIW dbtool相当有效。
如果您担心的字段由于可能的SQL访问而存在问题,您可能还希望通过-SQLTruncateTooLarge参数查看“授权数据截断”,该参数将动态截断数据。
另一种选择是-SQLWidthUpdate,它可以动态自动调整SQL宽度。这需要升级到至少11.6。
如果没有定期表扫描,这两个都可以解决您的问题。