Доступные версии документации

Создание/модификация глобальной переменной простого типа

Функция

Определение и инициализация глобальной переменной процедурного языка простого типа.

Спецификация
   
<создание/модификация глобальной переменной простого типа>::=
<имя глобальной переменной>::=
<тип данных переменной>::=
CHAR | VARCHAR | INTEGER | SMALLINT | BIGINT
| REAL | DOUBLE | DATE | DECIMAL | NUMERIC
| NCHAR | NCHAR VARYING | BOOLEAN |BYTE |VARBYTE | BLOB
<значение по умолчанию>::=
Синтаксические правила
  1. <Имя глобальной переменной> должно содержать буквы только латинского алфавита, цифры и символ подчеркивания.

  2. При создании новой глобальной переменной <имя глобальной переменной> должно быть уникальным среди имен всех глобальных переменных в указанной схеме.

  3. Опция OR REPLACE заставляет удалять существующую в БД глобальную переменную и создавать её под тем же именем, возможно, с другим типом данных или значением по умолчанию.

  4. Опция IF NOT EXISTS отменяет выполнение оператора, если указанная глобальная переменная уже существует в БД.

  5. Для глобальных переменных BLOB-типа установка <значение по умолчанию> не поддерживается.

Общие правила
  1. Глобальные переменные предназначены для использования в процедурном языке СУБД ЛИНТЕР (см. документ «СУБД ЛИНТЕР. Процедурный язык»).

  2. Созданная глобальная переменная:

    • включается в состав объектов указанной схемы;

    • либо включается в состав текущей схемы (если выполнен SQL-оператор SET SCHEMA) и <имя схемы> не задано;

    • либо её владельцем назначается пользователь, от имени которого выполнена команда создания глобальной переменной.

  3. Для создания/модификации глобальной переменной необходима привилегия RESOURCE.

  4. Максимальная длина значения глобальной переменной типа BYTE/VARBYTE, а также переменной символьного типа 4000 байт.

  5. Значения символьных глобальных переменных (CHAR/VARCHAR) записывается в текущей кодировке соединения, а NCHAR/NCHAR VARYING – UTF-16.

  6. Созданная/модифицированная глобальная переменная без указания <имени схемы> доступна из хранимых процедур СУБД ЛИНТЕР, созданных в той же схеме.

  7. Для доступа к «чужой» глобальной переменной необходимо указывать полное квалификационное имя: <имя схемы>.<имя глобальной переменной>.

Примеры
  1. Создание глобальной переменной:

    create variable company char='RELEX';
    create  variable department int=125;
  2. Создание или модификация существующей глобальной переменной:

    create or replace variable department smallint=10;
  3. Получить текущий список глобальных переменных с их схемами:

    select $$$usr.$$$s34,
           $$$glbvars.$$$name
      from $$$glbvars, $$$usr
     where $$$glbvars.$$$owner=$$$usr.$$$s31
       and $$$usr.$$$s32=0;
  4. Получить список символьных (char) и целочисленных (smallint) глобальных переменных:

    select $$$glbvars.$$$name, getstr($$$glbvars.$$$info,10,16)
      from $$$glbvars
     where getbyteb($$$glbvars.$$$info,1)=cast 1 as byte
     union
    select $$$glbvars.$$$name, cast getword($$$glbvars.$$$info,10) as char
      from $$$glbvars
     where getbyteb($$$glbvars.$$$info,1)=cast 2 as byte
       and getword($$$glbvars.$$$info,4) = 2;
    или
    select trim($$$glbvars.$$$name),
    case
    when getbyteb($$$glbvars.$$$info,1)= cast 1 as byte then
     getstr($$$glbvars.$$$info,10,16)
    when getbyteb($$$glbvars.$$$info,1)= cast 2 as byte and
     getword($$$glbvars.$$$info,4) = 2 then
    cast getword($$$glbvars.$$$info,10) as char
    end
    from $$$glbvars;
Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter