如何处理超过允许的最大值 2000 的 CHARACTER 变量?

问题描述

我正在使用 Progress-4GL、appBuilder 和过程编辑器,版本 11.6。

我刚刚发现了一个 CHaraCTER 类型的全局变量 (DEF VAR global_variable AS CHAR NO-UNDO.),最多包含 12901 个字符。该变量仅用于在应用程序内传递信息,该信息永远不会作为一个元组存储在一个表中。

那个变量中的信息似乎处理得很好:内容是正确的。

然而,正如 this URL 所提到的,Progress 中的字符变量的最大长度是 2000 个字符,这让我担心:恐怕有一天,可能会跨越另一个限制,从那一刻起,我们需要重新考虑整个想法,我想为那一天做好准备。

因此,有人知道 Progress 中字符变量的“下一个”长度限制吗?

提前致谢

解决方法

您提到的那篇参考文献指出了 SQL 限制。

在 ABL 中,一个 CHARACTER 变量可以容纳 ~ 32 k

DEFINE VARIABLE c AS CHARACTER   NO-UNDO.

ASSIGN c = FILL ("*",31000) . 

MESSAGE LENGTH (c) 
    VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.

除此之外,您必须使用 LONGCHAR 并有其局限性:

  • 稍慢
  • 不能在临时表或数据库表中建立索引。

CHARACTER 变量始终存储在 CPINTERNAL 代码页中。 LONGCHAR 可以通过 FIX-CODEPAGE 语句使用不同的代码页。