Вы, вероятно, не хотите делать это - потому что запуск программы будет медленным - но если вы решите, что все еще хотите это сделать, то у вас будет триггер, чтобы запустить хранимую процедуру, и хранимая процедура будет использоватьОператор SYSTEM для выполнения сценария bash.
CREATE PROCEDURE trivial(c varchar(30) default "hello world")
DEFINE cmd VARCHAR(60);
LET cmd = "echo " || c || " >/tmp/hello.world 2>&1";
SYSTEM cmd;
END PROCEDURE
Обратите внимание, что в сценарии не будет терминала для стандартного ввода, стандартного вывода или стандартной ошибки (я думаю, что он получает /dev/null
).Также обратите внимание, что команда, которую я показал, чревата проблемами с разрешениями - второй пользователь, выполняющий процедуру, вероятно, получит ошибки разрешения для файла.Вам также следует остерегаться «атак с использованием Unix-инъекций» - показанный код берет строку, предоставленную инициатором сценария, и запускает ее.Если строка содержит обратные кавычки или ..., тогда пользователь может выполнять команды.Возможно, им не очень хорошо запускать команду как таковую, но опасайтесь того, что я только что показал.
Если скрипт завершает работу с ненулевым состоянием, ваша хранимая процедура завершится с ошибкой -668 иошибка ISAM, соответствующая состоянию выхода.