Определение и инициализация глобальной переменной процедурного языка простого типа.
::=
::=
::=
::=
<Имя глобальной переменной>
должно содержать буквы только латинского алфавита,
цифры и символ подчеркивания.
При создании новой глобальной переменной <имя глобальной переменной>
должно быть
уникальным среди имен всех глобальных переменных в указанной схеме.
Опция OR REPLACE
заставляет удалять существующую в БД глобальную переменную
и создавать её под тем же именем, возможно, с другим типом данных или значением по умолчанию.
Опция IF NOT EXISTS
отменяет выполнение оператора, если указанная
глобальная переменная уже существует в БД.
Для глобальных переменных BLOB-типа установка <значение по умолчанию>
не поддерживается.
Глобальные переменные предназначены для использования в процедурном языке СУБД ЛИНТЕР (см. документ «СУБД ЛИНТЕР. Процедурный язык»).
Созданная глобальная переменная:
включается в состав объектов указанной схемы;
либо включается в состав текущей схемы (если выполнен SQL-оператор SET SCHEMA
)
и <имя схемы>
не задано;
либо её владельцем назначается пользователь, от имени которого выполнена команда создания глобальной переменной.
Для создания/модификации глобальной переменной необходима привилегия RESOURCE
.
Максимальная длина значения глобальной переменной типа BYTE/VARBYTE, а также переменной символьного типа 4000 байт.
Значения символьных глобальных переменных (CHAR/VARCHAR) записывается в текущей кодировке соединения, а NCHAR/NCHAR VARYING – UTF-16.
Созданная/модифицированная глобальная переменная без указания <имени схемы>
доступна из хранимых процедур СУБД ЛИНТЕР, созданных в той же схеме.
Для доступа к «чужой» глобальной переменной необходимо указывать полное
квалификационное имя: <имя схемы>.<имя глобальной переменной>
.
Создание глобальной переменной:
create variable company char='RELEX'; create variable department int=125;
Создание или модификация существующей глобальной переменной:
create or replace variable department smallint=10;
Получить текущий список глобальных переменных с их схемами:
select $$$usr.$$$s34, $$$glbvars.$$$name from $$$glbvars, $$$usr where $$$glbvars.$$$owner=$$$usr.$$$s31 and $$$usr.$$$s32=0;
Получить список символьных (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;