Навигация по документу

Синтаксис языка 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);

none