Я работаю с Progress-4GL, appBuilder и редактором процедур, выпуск 11.6.

Я только что нашел глобальную переменную типа CHARACTER (DEF VAR global_variable AS CHAR NO-UNDO.), содержащую до 12901 символа. Переменная используется только для передачи информации в приложении, информация никогда не будет храниться в виде одного кортежа в таблице.

Информация в этой переменной, кажется, обрабатывается правильно: содержание правильное.

Тем не менее, как этот URL упоминает, что максимальная длина символьной переменной в Progress составляет 2000 символов, и это заставляет меня беспокоиться: я боюсь, что однажды может быть пересечен другой предел, и с этого момента нам нужно будет переосмыслить всю идею , и я хочу быть готовым к этому дню.

Следовательно, знает ли кто-нибудь «следующий» предел длины символьной переменной в Progress?

Заранее спасибо

0
Dominique 16 Фев 2021 в 12:58

1 ответ

Лучший ответ

Упомянутая вами ссылка указывает на ограничения 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.

2
Mike Fechner 16 Фев 2021 в 10:09