Асинхронные вызовы хранимых процедур
-
09-06-2019 - |
Вопрос
Можно ли асинхронно вызвать хранимую процедуру из другой хранимой процедуры?
Редактировать: В частности, я работаю с базой данных DB2.
Решение
Управляющее резюме:Да, если в вашей базе данных есть служба очереди сообщений.
Вы можете поместить сообщение в очередь, и процессор очереди обработает его асинхронно.
- Оракул:очереди
- SQL-сервер:сервисный брокер
- БД2:брокер событий
Для «чистых» языков хранимых процедур (PL/Sql или T-Sql) ответ отрицательный, поскольку он работает против фундаментальной модели транзакций, имеющейся в большинстве баз данных.
Однако если в вашей базе данных есть механизм организации очередей, вы можете использовать его для получения того же результата.
Другие советы
В MS Sql Server 2005 попробуйте хранимые процедуры Service Broker и/или CLR.Я не думаю, что что-то встроено непосредственно в TSQL.
Похоже, вам нужно выполнить некоторые запланированные задания с помощью Cron (или эквивалента Windows).Вы можете использовать первоначальный вызов хранимой процедуры, чтобы установить какой-то флаг в БД, который затем периодически проверяется заданием cron.Если вам нужна определенная задержка перед выполнением второго задания, вы сможете сделать это, запланировав задачу заданием cron.