Информация о состоянии событий

Функция

Предоставление информации о текущем состоянии заданных событий.

Спецификация
 
< синтаксис >::=
< имя события1 >::=
< имя события2 >::=
Общие правила
  1. Максимальное число имён событий, которое можно передать функции, равно 32 (по числу бит в возвращаемом значении).

  2. < Символьный литерал > может быть UNICODE-литералом.

  3. Аргумент может быть задан < SQL-параметром >, который должен содержать спецификацию типа данных параметра.

Возвращаемое значение

Значение целого типа INTEGER, представляющее собой битовую маску состояний указанных событий. Например, для двух событий:

  • если наступило событие1, но не наступило событие2, будет возвращено значение 1;

  • если наступило событие1 и наступило событие2, будет возвращено значение (1 | 2) = 3.

Пример

Запуск в inl файла event1.cmd приводит к созданию таблицы и двух событий на добавление записей в таблицы $$$ATTRI и $$$SYSRL.

После запуска файла event2.cmd должны получить следующие результаты:

  1. сначала оба события не наступили, и оба вызова функции GET_EVENTS_STATE возвращают 0;

  2. затем наступило событие ATTRI (добавили столбец), вызов GET_EVENTS_STATE('ATTRI','SYSRL') возвращает 1, а вызов GET_EVENTS_STATE('SYSRL','ATTRI') возвращает 2;

  3. когда оба события наступили, оба вызова GET_EVENTS_STATE возвращают 3.

event1.cmd
inl.exe -t -q -u SYSTEM/MANAGER8 -f eve1.sql
start inl.exe -u SYSTEM/MANAGER8 -f eve2.sql
start inl.exe -u SYSTEM/MANAGER8 -f eve3.sql

event2.cmd
inl.exe -t -q -u SYSTEM/MANAGER8 -f eve0.sql
inl.exe -t -q -u SYSTEM/MANAGER8 -f eve4.sql
echo result is 1:
inl.exe -t -q -u SYSTEM/MANAGER8 -f eve0.sql
inl.exe -t -q -u SYSTEM/MANAGER8 -f eve1.sql
echo result is 3:
inl.exe -t -q -u SYSTEM/MANAGER8 -f eve0.sql

eve0.sql
select GET_EVENTS_STATE('ATTRI','SYSRL');
select GET_EVENTS_STATE('SYSRL','ATTRI');

eve1.sql
create or replace table test(i int);

eve2.sql
drop event ATTRI;
create event ATTRI as insert on $$$ATTRI;
wait event ATTRI;

eve3.sql
drop event SYSRL;
create event SYSRL as insert on $$$SYSRL;
wait event SYSRL;

eve4.sql
alter table test add column j int;