Создание/модификация глобальной переменной простого типа
Функция
Определение и инициализация глобальной переменной процедурного языка простого типа.
Спецификация
::=
VARIABLE [имя схемы.]имя глобальной переменной
тип данных переменной[=значение по умолчанию]
::=
::=
::=
Синтаксические правила
-
< Имя глобальной переменной >
должно содержать буквы только латинского алфавита, цифры, символ подчеркивания и символы: @, #, %, ?, ~. -
При создании новой глобальной переменной
< имя глобальной переменной >
должно быть уникальным среди имен всех глобальных переменных в указанной схеме. -
Опция
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;