Спящий режим IBM DB2 SQL, ожидание или задержка для хранимой процедуры

У меня есть небольшая процедура цикла, которая ожидает, пока другой процесс запишет флаг в таблицу. Есть ли способ добавить задержку, чтобы этот процесс не потреблял так много процессора? Я считаю, что может потребоваться от 1 до 2 минут, если все закончится правильно.

BEGIN

DECLARE STOPPED_TOMCAT VARCHAR (1);

UPDATE MRC_MAIN.DAYEND SET DENDSTR = 'Y';
SET STOPPED_TOMCAT = (SELECT TOMCSTP FROM MRC_MAIN.DAYEND);
WHILE ( STOPPED_TOMCAT <> 'Y')
    DO
       SET STOPPED_TOMCAT = (SELECT TOMCSTP FROM MRC_MAIN.DAYEND);
END WHILE;
END;


person Michael Vincenty    schedule 25.05.2020    source источник
comment
Использовать cron и периодически вызывать процедуру из ОС?   -  person The Impaler    schedule 25.05.2020
comment
Не уверен, что это сработает. Это нужно будет вызвать в начале набора процедур. По сути, я напишу флаг и запущу другой процесс на сервере Windows, как только этот процесс будет завершен, он запишет обратно в эту таблицу, и теперь этот цикл SQL может закончиться. Это вызовет продолжение остальных процедур.   -  person Michael Vincenty    schedule 25.05.2020


Ответы (2)


Используйте call dbms_alert.sleep(x), где x - количество секунд.

person Mark Barinstein    schedule 25.05.2020
comment
Не похоже, что у нас есть этот модуль. [Код: -204, состояние SQL: 42704] [SQL0204] SLEEP в DBMS_ALERT типа *N не найден. - person Michael Vincenty; 26.05.2020
comment
Вы должны правильно пометить свой вопрос тегом [db2-400], если это система Db2 for IBM i, где такой процедуры действительно не существует. - person Mark Barinstein; 26.05.2020

У меня нет ресурсов для тестирования этого решения, но почему бы не попробовать вызвать IBM i Command DLYJOB в своем коде:

CALL QCMDEXC('DLYJOB DLY(1)', 13);

Параметр DLY указывает время ожидания в секундах, а число 13 — это длина выполняемой командной строки.

person Daniel Lema    schedule 03.06.2020
comment
Куда бы вы предложили мне позвонить? В петле или снаружи? И следует ли это вызывать до или после какой-либо конкретной команды? - person Michael Vincenty; 14.07.2020