Навигация по документу
Синтаксис языка LASP QL
Задание имени идентификатора из хост-переменной
Конструкция:
{HOSTVAR}
Описание:
Используется для задания имени идентификатора из хост-переменной.
Пример:
Ранее объявлены процедуры PROC_WORKDAY и PROC_WEEKEND.
<<EVAL>> case when DAYOFWEEK_ISO(current date) in (6,7)
then 'PROC_WEEKEND'
else 'PROC_WORKDAY'
end
<<INTO>> CURRENT_PROC <<END>>
<<CALL>> {CURRENT_PROC} <<END>>
Подстановка значения хост-переменной
Конструкция:
#HOSTVAR#
Описание:
Подстановка значения хост-переменной.
Значения подставляются в соответствии с типом данных.
Пример:
в java:
HOSTVAR1=new Integer(102)
HOSTVAR2="Тестовая строка"
в Построителе объектов:
HOSTVAR1=102
HOSTVAR2='Тестовая строка'
values(#HOSTVAR1#,#HOSTVAR2#)
Результат:
values(102,'Тестовая строка')
Подстановка значения скрипт-переменной
Конструкция:
%SCRIPTVAR%
Описание:
Подстановка значения скрипт-переменной.
Значения подставляются «как есть»
Пример:
SCRIPTVAR1=10
SCRIPTVAR2=test.table
select * from %SCRIPTVAR2% where id=SCRIPTVAR1
Результат:
select * from test.table where id=SCRIPTVAR1
Обработка парсером текста внутри конструкции
Конструкция:
<<[>><<]>>
Описание:
Текст внутри конструкции не обрабатывается парсером.
Пример:
HOST1=123
HOST2=345
Клауза:
\#HOST1#+#HOST2#
<<[>> #HOST1#+#HOST2# <<]>>
Результат:
123+345
\#HOST1#+#HOST2#
Обработка содержимого тега как запроса, не возвращающего данные
Конструкция:
<<{>><<}>>
Описание:
Содержимое тега будет обработано СУБД во время работы интерпретатора как запрос, не возвращающий данных.
Конструкция:
<<EVAL_UPDATE>><<END>>
Описание:
Содержимое тега будет обработано СУБД во время работы интерпретатора как запрос, не возвращающий данных.
Конструкция:
<<EVAL_UPDATE>><<INTO>><<END>>
Описание:
Содержимое тега будет обработано СУБД во время работы интерпретатора как запрос, не возвращающий данных, количество обработанных данных будет помещено в переменную.
Пример:
<<EVAL_UPDATE>> insert into T(ID) values (1),(2)<<INTO>>RES<<END>>
Результат:
После обработки содержание переменной RES -> 2.
Конструкция:
<<EXEC>><<END>>
Описание:
Содержимое тега будет обработано СУБД во время работы интерпретатора как запрос, не возвращающий данных. Запрос выполняется целиком, без разбиения по «;»
Выполнение java-метода
Конструкция:
<<CALL_JAVA>><<END>>
Описание:
Выполнить java-метод
<<CALL_JAVA>>com.lasp.server.developer.Check.test<<END>>,
где:
com.lasp.server.developer.Check- java-класс,test- java-метод.
Причем, вызываемый метод может быть как регулярным, так и статическим (static).
В случае использования нестатических методов интерпретатор создает экземпляр указанного класса.
Выполнение java-метода с помещением результата в переменную
Конструкция:
<<CALL_JAVA>><<INTO>><<END>>
Описание:
Выполнить java-метод, Результат: поместить в переменную.
Пример:
<<CALL_JAVA>>com.lasp.server.developer.DBFWriter.getVersion
<<INTO>>
VERSION
<<END>>,
где:
com.lasp.server.developer.DBFWriter- java-класс,getVersion- java-метод,VERSION- целевая хост-переменная.
Выполнение java-метода со списком входящих параметров
Конструкция:
<<CALL_JAVA>><<WITH>><<END>>
Описание:
Выполнить java-метод, со списком входящих параметров.
Пример:
<<CALL_JAVA>>com.lasp.server.developer.DBFWriter.write
<<WITH>>
\#FILENAME#, #USER#
<<END>>,
где:
com.lasp.server.developer.DBFWriter- java-класс,write- java-метод,FILENAME–имя файла,USER– текущий пользователь.
Выполнение java-метода со списком входящих параметров, результатов
Конструкция:
<<CALL_JAVA>><<WITH>><<INTO>><<END>>
Описание:
Выполнить java-метод, со списком входящих параметров, результатов.
Пример:
<<CALL_JAVA>>com.lasp.server.developer.DBFWriter.write
<<WITH>>
\#FILENAME#, #USER#
<<INTO>> RES
<<END>>,
где:
com.lasp.server.developer.DBFWriter- java-класс,write- java-метод,FILENAME– имя файла,USER- текущий пользователь.
Вызов процедуры без параметров
Конструкция:
<<CALL>><<END>>
Описание:
Вызов процедуры без параметров.
Пример:
<<PROCEDURE>> TESTPROC <<BODY>>
insert into testtable(ID) values (#CURID#);
<<END>>
<<EVAL>>1<<INTO>>CURID<<END>>
<<CALL>> TESTPROC <<END>>
<<EVAL>>2<<INTO>>CURID<<END>>
<<CALL>> TESTPROC <<END>>
Результат:
insert into testtable(ID) values (1);
insert into testtable(ID) values (2);
Вызов процедуры без параметров из библиотеки
Конструкция:
<<CALL>><<LIB>><<END>>
Описание:
Вызов процедуры без параметров из библиотеки.
При использовании конструкции '<
Пример:
<<PROCEDURE>> TESTPROC <<BODY>>
insert into testtable(ID) values (#CURID#);
<<END>>
<<EVAL>>1<<INTO>>CURID<<END>>
<<CALL>> TESTPROC <<LIB>> TESTLIB <<END>>
<<EVAL>>2<<INTO>>CURID<<END>>
<<CALL>> TESTPROC <<LIB>> TESTLIB <<END>>
Результат:
insert into testtable(ID) values (1);
insert into testtable(ID) values (2);
Вызов процедуры без параметров с записью результата в переменную
Конструкция:
<<CALL>><<INTO>><<END>>
Описание:
Вызов процедуры без параметров с записью результата в переменную.
Пример:
<<PROCEDURE>>TESTPROC<<BODY>>
current date+1 DAY
<<END>>
<<CALL>> TESTPROC <<INTO>> NEXTDATE <<END>>
Результат:
Содержание переменной NEXTDATE – дата следующего дня.
Примечание. Вызов
<<CALL>> TESTPROC <<INTO>> NEXTDATE <<END>>аналогичен конструкции<<EVAL>><<CALL>> TESTPROC <<END>><<INTO>> NEXTDATE <<END>>.
Вызов процедуры без параметров из библиотеки с записью результата в переменную
Конструкция языка
<<CALL>><<LIB>><<INTO>><<END>>
Описание:
Вызов процедуры без параметров из библиотеки с записью результата в переменную.
При использовании конструкции '<
Пример:
<<PROCEDURE>> TESTPROC <<BODY>>
current date+1 DAY
<<END>>
<<CALL>> TESTPROC <<LIB>> TESTLIB <<INTO>> NEXTDATE <<END>>
Результат:
Содержание переменной NEXTDATE - дата следующего дня.
Примечание. Вызов
<<CALL>> TESTPROC <<INTO>> NEXTDATE <<END>>аналогичен конструкции<<EVAL>> <<CALL>> TESTPROC <<END>> <<INTO>> NEXTDATE <<END>>.
Вызов процедуры с параметрами
Конструкция:
<<CALL>><<LIB>><<WITH>><<END>>
Описание:
Вызов процедуры с параметрами.
Пример:
<<PROCEDURE>> TESTPROC <<PARAMETR>>ID,DATA<<BODY>>
insert into testtable(ID,DATA) values (#ID#,#DATA#);
<<END>>
<<CALL>> TESTPROC <<LIB>> TESTLIB <<WITH>>1,'Один'<<END>>
<<CALL>> TESTPROC <<LIB>> TESTLIB <<WITH>>2,'Два'<<END>>
Результат:
insert into testtable(ID,DATA) values (1,'Один');
insert into testtable(ID,DATA) values (2,'Два');
Вызов процедуры с параметрами и записью результата в переменную
Конструкция:
<<CALL>><<WITH>><<INTO>><<END>>
Описание:
Вызов процедуры с параметрами и записью результата в переменную.
Пример:
<<PROCEDURE>>SQR<<PARAMETR>>NUM<<BODY>>
NUM*NUM
<<END>>
<<CALL>> SQL <<WITH>> 2 <<INTO>> SQR2 <<END>>
<<CALL>> SQL <<WITH>> 4 <<INTO>> SQR4 <<END>>
\#SQR2# + #SQR4#
Результат:
4 + 16
Вызов процедуры с параметрами из библиотеки и записью результата в переменную
Конструкция языка
<<CALL>><<LIB>><<WITH>><<INTO>><<END>>
Описание:
Вызов процедуры с параметрами и записью результата в переменную.
При использовании конструкции '<
Пример:
<<PROCEDURE>> SQR <<PARAMETR>>NUM<<BODY>>
NUM*NUM
<<END>>
<<CALL>> SQL <<LIB>> TESTLIB <<WITH>> 2 <<INTO>> SQR2 <<END>>
<<CALL>> SQL <<LIB>> TESTLIB <<WITH>> 4 <<INTO>> SQR4 <<END>>
\#SQR2# + #SQR4#
Результат:
4 + 16
Отмена выполнения
Конструкция:
<<CANCEL_TASK>> TASK_ID <<END>>
Описание:
Отменить выполнение.
Добавление подзадачи в задачу
Конструкция:
<<CHANGE_TASK>>
<<REPORT>> REPORT_ALIAS <<PARAMETR>> HOST1, HOST2
<<COMMAND>> COMMAND_ALIAS <<PARAMETR>> HOST1, HOST2
<<TASK>> TASK_ID
<<END>>
Описание:
Добавить подзадачи в задачу.
Выполнение SQL и DDL при помощи db2cli.exe с записью результата в серверный журнал
Конструкция:
<<CLI_COMMAND>><<END>>
Описание:
Выполнение SQL и DDL при помощи db2cli.exe. Результат записывается в серверный журнал.
Пример:
<<CLI_COMMAND>>
connect to NSPF user db2admin using db2admin;
drop table #TESTTABLE#;
connect reset;
<<END>>
Выполнение SQL и DDL при помощи db2cli.exe с записью результата в хост-переменную
Конструкция:
<<CLI_COMMAND>><<INTO>><<END>>
Описание:
Выполнение SQL и DDL при помощи db2cli.exe. Результат записывается в хост-переменную.
Пример:
<<CLI_COMMAND>>
connect to NSPF user db2admin using db2admin;
drop table #TESTTABLE#;
connect reset;
<<INTO>> SQL_LOG <<END>>
Подтверждение транзакции
Конструкция:
<<COMMIT>>
Описание:
Подтверждение транзакции.
Временное переключение на другую базу
Конструкция:
<<CONNECTION>><<BODY>><<END>>
Описание:
Временное переключение на другую базу.
Постановка задачи в расписание
Конструкция:
<<CREATE_TASK>>
<<AUTOPURGE>> Y
<<SUSPENDED>> N
<<REPEATS>> 1
<<INTERVAL>>
<<START>>
<<REPORT>> REPORT_ALIAS <<PARAMETR>> HOST1, HOST2
<<COMMAND>> COMMAND_ALIAS <<PARAMETR>> HOST1, HOST2
<<INTO>>TASK_ID
<<END>>
Описание:
Поставить задачу в расписание.
Определение хост-переменной
Конструкция:
<<DEFINE>><<END>>
Описание:
Определить хост-переменную. Имя хост-переменной.
Пример:
<<DEFINE>> H1 <<END>>
Результат:
Переменная H1 имеет значение null.
Определение хост-переменной с вычисляемым именем
Конструкция:
<<DEFINE>><<WITH>><<END>>
Описание:
Определить хост-переменную. Имя хост-переменной может быть вычисляемым.
Пример:
<<DEFINE>> H1 <<WITH>> 'Test String' <<END>>
Результат:
Переменная H1 имеет значение 'Test String'.
Определение/инициализация хост-переменных
Конструкция:
<<EVAL>><<INTO>><<END>>
Описание:
Определение/инициализация хост-переменных.
Пример:
<<EVAL>> 5 <<INTO>> ID_USER <<END>>
Интерпретируется как команда на создание (или переопределение) переменной с именем ID_USER и инициализации ее значением типа Integer равным 5.
Пример:
<<EVAL>> select ID from SECURITY.USER where NAME = 'admin' <<INTO>> ID_USER <<END>>
<<EVAL>>date('2019-11-11') <<INTO>> PAY_DATE <<END>>
<<EVAL>>date(#CURRENT_DATE#) <<INTO>> PAY_DATE <<END>>
Снятие кавычек
Конструкция:
<<EVAL_STR>><<END>>
Описание:
Снятие кавычек.
Пример:
В результате обработки интерпретатором команды:
select ID from <<EVAL_STR>> #MY_TABLE_NAME# <<END>>,
где #MY_TABLE_NAME# = 'TEMP.TABLE_NAME', получим select ID from TEMP.TABLE_NAME.
Создание "таблицы" со значениями
Конструкция:
<<EVAL_TBL>><<END>>
Описание:
Создание "таблицы" со значениями.
Пример:
Если таблица T1 содержит следующую информацию:
| ID | DATA |
|---|---|
| 1 | Январь |
| 2 | Февраль |
| 3 | Март |
| … | … |
Команда:
values
<<EVAL_TBL>>select * from T1 where ID in (1,3)<<END>>
Результат:
values
(1,'Январь'),
(3,'Март')
Создание "таблицы" со значениями и записью в переменную
Конструкция:
<<EVAL_TBL>><<INTO>><<END>>
Описание:
Создание "таблицы" со значениями и запись в переменную.
Пример:
Если таблица T1 содержит следующую информацию:
| ID | DATA |
|---|---|
| 1 | Январь |
| 2 | Февраль |
| 3 | Март |
| … | … |
Команда:
<<EVAL_TBL>>select * from T1 where ID in (1,3)<<INTO>>AHOST<<END>>
Результат:
Содержимое переменной AHOST- '(1,''Январь''),(3,''Март'')'.
Обработка содержимого тега как запроса на получение набора данных
Конструкция:
<<EVAL>><<END>>
Описание:
Содержимое тега будет обработано СУБД (как запрос на получение набора данных) во время работы интерпретатора, результат будет помещен, вместо указанного тега.
Конструкция:
<<EVAL>><<DEFAULT>><<END>>
Описание:
Содержимое тега будет обработано СУБД (как запрос на получение набора данных) во время работы интерпретатора, Результат: будет помещен, вместо указанного тега. Если запрос не вернет данных, то выполнится запрос содержащийся в секции DEFAULT.
Конструкция:
<<EVAL>><<DEFAULT>><<INTO>><<END>>
Описание:
Если запрос не вернет данных, то выполнится запрос, содержащийся в секции DEFAULT.
Пример:
<<EVAL>> select id from table where 1=2 <<DEFAULT>> -1 <<END>>
Результат:
-1
Цикл
Конструкция:
<<FOR_EACH>><<FROM>>[<<ON>>]<<DO>><<END>>
Описание:
Цикл. Повторяется столько раз, сколько записей в выборке. Количество повторений не ограничено. Тело цикла выполняется в своей коннекции (копии текущей, если не указан параметр <<ON>>).
Пример:
Таблица T1 содержит следующую информацию:
| ID | DATA |
|---|---|
| 1 | Январь |
| 2 | Февраль |
| 3 | Март |
| … | … |
Команда:
<<FOR_EACH>> NUM,MONTH
<<FROM>>select ID, DATA from T1 where ID in (1,3)
<<ON>> TEST <<DO>>
Месяц №#NUM# - <<EVAL_STR>>#MONTH#<<END>>
<<END>>
Результат:
Месяц №1 – Январь
Месяц №3 – Март
Выражение <<EVAL_STR>>...<<END>> исполнялось на коннекции TEST.
Цикл с ограничением повторений
Конструкция:
<<FOR>><<FROM>><<DO>><<END>>
Описание:
Цикл. Повторяется столько раз, сколько записей в выборке. Количество повторений ограничено 1000.
Пример:
Таблица T1 содержит следующую информацию:
| ID | DATA |
|---|---|
| 1 | Январь |
| 2 | Февраль |
| 3 | Март |
| … | … |
Команда:
<<FOR>> NUM,MONTH
<<FROM>>select ID, DATA from T1 where ID in (1,3)
<<DO>>
Месяц №#NUM# - <<EVAL_STR>>#MONTH#<<END>>
<<END>>
Результат:
Месяц №1 – Январь
Месяц №3 – Март
Условие "Если ВЫРАЖЕНИЕ=ИСТИНА, тогда…, иначе…"
Конструкция:
<<IF>><<THEN>><<ELSEIF>><<THEN>><<ELSE>><<END>>
Описание:
Условие - Если ВЫРАЖЕНИЕ = ИСТИНА, тогда ... , иначе ...,
где ВЫРАЖЕНИЕ – это скрипт, заключенный между тегами <<IF>> и <<THEN>>
Пример:
<<IF>> (select count(*) from FORM.PERSON) > 1000000 <<THEN>>
...
<<ELSEIF>> (select count(*) from FORM.PERSON) > 100 <<THEN>>
...
<<ELSE>>
...
<<END>>
Конструкция:
<<IF>><<THEN>><<ELSE>><<END>>
Описание:
Условие - Если ВЫРАЖЕНИЕ = ИСТИНА, тогда ... , иначе ...,
где ВЫРАЖЕНИЕ – это скрипт, заключенный между тегами <<IF>> и <<THEN>>.
Пример:
<<IF>> (select count(*) from FORM.PERSON) > 1000000 <<THEN>>
...
<<ELSE>>
...
<<END>>
Условие "Если переменная определена, тогда…, иначе…"
Конструкция:
<<IFDEF>><<THEN>><<ELSE>><<END>>
Описание:
Условие - Если переменная определена, тогда ... , иначе ...
Условие "Если переменная определена, тогда…"
Конструкция:
<<IFDEF>><<THEN>><<END>>
Описание:
Условие - Если переменная определена, тогда ...
Условие "Если переменная не определена, тогда…"
Конструкция:
<<IFUNDEF>><<THEN>><<END>>
Описание:
Условие - Если переменная не определена, тогда ...
Проверка выполнения процесса с указанным именем
Конструкция:
<<IS_ALIVE>><<END>>
Описание:
Проверить выполняется ли процесс с указанным именем.
Пример:
<<IS_ALIVE>> THREAD_NAME <<END>>
Результат:
False
Проверка выполнения процесса с указанным именем с результатом в переменную
Конструкция:
<<IS_ALIVE>><<INTO>><<END>>
Описание:
Проверить выполняется ли процесс с указанным именем. Результат помещается в переменную.
Пример:
<<IS_ALIVE>> THREAD_NAME <<INTO>> RES <<END>>
Результат:
Переменная RES = false
Защита хост-переменных
Конструкция:
<<LOCALVARS>><<END>>
Описание:
Защита хост переменных. Изменения хост-переменных, действуют только внутри блока.
Пример:
<<EVAL>> 1 <<INTO>> HOST1 <<END>>
Значение HOST1 = 1
<<LOCALVARS>>
<<EVAL>> 2 <<INTO>> HOST1 <<END>>
<<EVAL>> 'TEST' <<INTO>> HOST2 <<END>>
Значение HOST1 = 2
Значение HOST2 = 'TEST'
<<END>>
Результат:
Значение HOST1 = 1
Значение HOST2 не определено
Проверка строки на соответствие регулярному выражению (вариант 1)
Конструкция:
<<MATCH>><<REGEXP>><<END>>
Описание:
Проверка строки на соответствие регулярному выражению.
Пример:
<<MATCH>>Test<<REGEX>>[A-Z|a-z]+<<END>>
Результат:
True
Проверка строки на соответствие регулярному выражению (вариант 2)
Конструкция:
<<MATCH>><<REGEXP>><<INTO>><<END>>
Описание:
Проверка строки на соответствие регулярному выражению.
Пример:
<<MATCH>>Test0<<REGEX>>[A-Z|a-z]+<<INTO>> RES <<END>>
<<IF>> #RES# <<THEN>> 1 <<ELSE>> 0 <<END>>
Результат:
0
Подсчет времени выполнения блока
Конструкция:
<<MEASURE>><<END>>
или
<<MEASURE>><<TIME>><<INTO>><<END>>
или
<<MEASURE>><<INTO>><<END>>
или
<<MEASURE>><<TIME>><<END>>
Описание:
Подсчитывает время выполнения блока. <<TIME>> возвращает промежуточный результат.
Типизированный NULL (дата)
Конструкция:
<<NULLIF_DATE>><<END>>
Описание:
Типизированный NULL (дата).
Пример:
<<NULLIF_DATE>> #CURRENT_DATE# <<END>>
Результат:
Если значение переменной CURRENT_DATE было NULL то, вместо тега будет помещена конструкция nullif(date(0), date(0)).
Типизированный NULL (вещественное)
Конструкция:
<<NULLIF_DBL>><<END>>
Описание:
Типизированный NULL (вещественное).
Пример:
<<NULLIF_DBL>> #PRICE# <<END>>
Результат:
Если значение переменной PRICE было NULL то, вместо тега будет помещена конструкция nullif(0.0, 0.0).
Типизированный NULL (целое)
Конструкция:
<<NULLIF_INT>><<END>>
Описание:
Типизированный NULL (целое)
Пример:
<<NULLIF_INT>> #ID_PERSON# <<END>>
Результат:
Если значение переменной ID_PERSON было NULL то, вместо тега будет помещена конструкция nullif(0, 0).
Типизированный NULL (строка)
Конструкция:
<<NULLIF_STR>><<END>>
Описание:
Типизированный NULL (строка).
Пример:
<<NULLIF_STR>> #ADDRESS# <<END>>
Результат:
Если значение переменной ADDRESS было NULL то, вместо тега будет помещена конструкция nullif('', '').
Выполнение команд операционной системы с сохранением результата в хост-переменной
Конструкция:
<<OS_COMMAND>><<INTO>><<END>>
Описание:
Выполнение команд операционной системы. Результат сохраняется в хост-переменной.
Пример:
<<OS_COMMAND>>
echo OK
<<INTO>> TEST <<END>>
Результат:
TEST='OK'
Выполнение команд операционной системы с записью результата в серверный журнал
Конструкция:
<<OS_COMMAND>><<END>>
Описание:
Выполнение команд операционной системы. Результат записывается в серверный журнал.
Пример:
<<OS_COMMAND>>
del #FILENAME#
dir
<<END>>
Подстановка значений хост-переменных в динамически сгенерированный скрипт
Конструкция:
<<PARSE>><<END>>
Описание:
Подстановка значений хост-переменных в динамически сгенерированный скрипт.
Пример:
<<EVAL>> 12345 <<INTO>> HOST1 <<END>>
<<EVAL>> 67890 <<INTO>> HOST2 <<END>>
<<PARSE>>
<<FOR>> HOSTNAME <<FROM>>values('HOST1'),('HOST2') <<DO>>
<<EVAL_STR>>#HOSTNAME#||'=#' || #HOSTNAME# ||'#' <<END>>
<<END>>
<<END>>
Результат:
HOST1=12345
HOST2=67890
Определение процедуры
Конструкция:
<<PROCEDURE>><<BODY>><<END>>
Описание:
Определение процедуры.
Пример:
<<PROCEDURE>> TESTPROC <<BODY>>
insert into test.table(ID) values (#CURID#);
<<END>>
<<EVAL>>1<<INTO>>CURID<<END>>
<<CALL>> TESTPROC <<END>>
<<EVAL>>2<<INTO>>CURID<<END>>
<<CALL>> TESTPROC <<END>>
Результат:
insert into test.table(ID) values (1);
insert into test.table(ID) values (2);
Определение процедуры с параметрами
Конструкция:
<<PROCEDURE>><<PARAMETR>><<BODY>><<END>>
Описание:
Определение процедуры с параметрами.
Пример:
<<PROCEDURE>> TESTPROC <<PARAMETR>>ID, DATA<<BODY>>
insert into test.table(ID,DATA) values (#ID#,#DATA#);
<<END>>
<<CALL>> TESTPROC <<WITH>>1,'Один'<<END>>
<<CALL>> TESTPROC <<WITH>>2,'Два'<<END>>
Результат:
insert into test.table(ID,DATA) values (1,'Один');
insert into test.table(ID,DATA) values (2,'Два');
Удаление установленной задачи
Конструкция:
<<PURGE_TASK>> TASK_ID <<END>>
Описание:
Удалить установленную задачу.
Поиск и замена подстроки (вариант 1)
Конструкция:
<<REPLACE>><<REGEXP>><<WITH>><<END>>
Описание:
Поиск и замена подстроки.
Пример:
<<REPLACE>>Опечатка<<REGEXP>>б<<WITH>> '' <<END>>
Результат:
Опечатка
Поиск и замена подстроки (вариант 2)
Конструкция:
<<REPLACE>><<REGEXP>><<WITH>><<INTO>><<END>>
Описание:
Поиск и замена подстроки.
Пример:
<<REPLACE>>A,b,C,d,E<<REGEXP>> [a-z] <<WITH>> '#'
<<INTO>> RES <<END>>
Результат:
RES = A,#,C,#,E
Возобновление выполнения
Конструкция:
<<RESUME_TASK>> TASK_ID <<END>>
Описание:
Возобновить выполнение.
Откат транзакции
Конструкция:
<<ROLLBACK>>
Описание:
Откат транзакции.
Запись текста скрипта в переменную без интерпретации
Конструкция:
<<SCRIPT>><<INTO>><<END>>
Описание:
Запись текста скрипта в переменную без интерпретации.
Отправка письма по электронной почте
Конструкция:
<<SEND_MAIL>><<SENDER>><<TO>> [<<TO>> ...] <<END>>
или
<<SEND_MAIL>><<SENDER>><<TO>><<SUBJECT>><<SERVER>><<END>>
или
<<SEND_MAIL>><<TO>><<END>>
Описание:
Отправить письмо по электронной почте. Поля <<SENDER>> и <<SUBJECT>> можно не заполнять.
Пример:
<<SEND_MAIL>>
Test Mail Body
<<SENDER>> from@abc.net
<<TO>> first_recipient@abc.net
<<TO>> second_recipient@abc.net
<<SUBJECT>> Test Subject
<<SERVER>> mail.abc.net
<<END>>
Отправка JMS-сообщения клиенту
Конструкция:
<<SEND>><<END>>
или
<<SEND>> ALERT <<TO>> %USER% <<BODY>> … <<END>>
или
<<SEND>> SYSOUT <<TO>> %USER% <<BODY>> … <<END>>
Описание:
Послать JMS сообщение клиенту.
Пример:
<<SEND>> INFO <<TO>> %USER%
<<BODY>>
Выполнен шаг №5
<<END>>
Задержка выполнения на указанное количество миллисекунд
Конструкция:
<<SLEEP>><<END>>
Описание:
Задержать выполнение на указанное количество миллисекунд.
Пример:
<<SLEEP>> 5000 <<END>>
Результат:
Пауза в 5 секунд.
Разбиение строки по регулярному выражению
Конструкция:
<<SPLIT>><<REGEXP>><<INTO>><<END>>
Описание:
Разбиение строки по регулярному выражению.
Пример:
<<SPLIT>>PART1; PART2; PART3<<REGEX>>; <<INTO>> P1,P2,P3<<END>>
Результат:
"/#P1#/#P2#/#P3#/"становится "/'PART1'/'PART2'/'PART3'/"
Отсрочка выполнения
Конструкция:
<<SUSPEND_TASK>> TASK_ID <<END>>
Описание:
Отложить выполнение.
Консольный вывод
Конструкция:
<<SYSTEM_OUT>><<END>>
Описание:
Консольный вывод.
Пример:
<<SYSTEM_OUT>> Обрабатывается договор ИД #ID_CONTRACT# <<END>>
Результат:
[11.11.19 17:42:17:616 MSD] 00000096 SystemOutO [I]
Обрабатывается договор ИД 241
Обработка в отдельном потоке
Конструкция:
<<THREAD>><<BODY>><<END>>
Описание:
Произвести обработку в отдельном потоке.
Пример:
<<THREAD>> THREAD_NAME <<BODY>>
...действия...
<<END>>
Генерация ошибки типа "com.lasp.parser.ThrowClauseError"
Конструкция:
<<THROW>><<END>>
Описание:
Генерация ошибки типа "com.lasp.parser.ThrowClauseError".
Пример:
<<THROW>> Ошибка! Такая группа (#ID_GROUP#) уже существует <<END>>
Обработка SQLException
Конструкция:
<<TRY>><<CATCH>><<END>>
Описание:
Обработка SQLException.
Пример:
В блоке <<CATCH>> доступны дополнительные переменные:
#SQL_STATE#;#SQL_ERRCODE#;#DB2_STATE#;#SQL_ERRMSG#.<<TRY>> <<EVAL>> select m from UNDEF.TABLE <<END>> <<CATCH>> <<SYSTEM_OUT>> SqlState=#SQL_STATE# SqlErrcode=#SQL_ERRCODE# Db2State=#DB2_STATE# SqlErrMsg=#SQL_ERRMSG# <<END>> <<END>>
Результат:
SqlState='42S02'
SqlErrcode=-204
Db2State='SQL0204N'
SqlErrMsg='[IBM][CLI Driver][DB2/NT] SQL0204N "UNDEF.TABLE" is an undefined name. SQLSTATE=42704'
Удаление переменной
Конструкция:
<<UNDEF>><<END>>
Описание:
Удаление переменной.
Пример:
<<UNDEF>> TESTHOST <<END>>
Результат:
Переменная TESTHOST не определена, дальнейшее ее использование невозможно.
Ожидание завершения потока
Конструкция:
<<WAIT>><<END>>
Описание:
Ожидать завершения потока.
Пример:
<<WAIT>>THREAD_NAME<<END>>
Ожидание завершения потока с помещением результата в переменную
Конструкция:
<<WAIT>><<INTO>><<END>>
Описание:
Ожидать завершения потока. Поместить результат в переменную.
Пример:
<<WAIT>> THREAD_NAME <<INTO>> THREAD_RESULT <<END>>
Цикл (выполнение пока условие истинно)
Конструкция:
<<WHILE>><<DO>><<END>>
Описание:
Цикл. Выполняется пока условие истинно.
Пример:
<<EVAL>> 0 <<INTO>> NUM <<END>>
<<WHILE>> #NUM# < 50 <<DO>>
<<EVAL>> #NUM#+10 <<INTO>> NUM <<END>>
insert into T(ID) values (#NUM#);
<<END>>
Результат:
insert into T(ID) values (10);
insert into T(ID) values (20);
insert into T(ID) values (30);
insert into T(ID) values (40);
insert into T(ID) values (50);