Как лучше всего выполнить семантический эквивалент традиционного системного вызова sleep () из подпрограммы Informix SPL? Другими словами, просто «сделайте паузу» на N секунд (или миллисекунд или что-то еще, но секунды - это нормально). Я ищу решение, которое не связано с компоновкой нового (возможно, написанного мной) кода C или другой библиотеки с сервером Informix. Это должно быть что-то, что я могу делать исключительно из SPL. Подойдет решение для IDS 10 или 11.
@RET - "Очевидный" ответ для меня не был очевиден! Я не знал о команде SYSTEM. Спасибо! (И да, я тот парень, о котором вы думаете.)
Да, это только для отладки. К сожалению, CURRENT в SPL всегда будет возвращать одно и то же значение, установленное при входе в вызов:
"любой вызов CURRENT изнутри функции SPL, который вызывает инструкция EXECUTE FUNCTION (или EXECUTE PROCEDURE), возвращает значение системных часов при запуске функции SPL."
—IBM Informix Guide to SQL
Помещение CURRENT в отдельную подпрограмму не помогает. Вы действительно получаете другой ответ на первый вызов вашей оболочки (при условии, что вы используете YEAR TO FRACTION (5) или какой-либо другой тип с достаточно высоким разрешением, чтобы показать разницу), но затем вы получаете то же значение обратно на каждом отдельном последующий вызов, который гарантирует, что любой цикл никогда не завершится.