Вопрос

Можно ли асинхронно вызвать хранимую процедуру из другой хранимой процедуры?

Редактировать: В частности, я работаю с базой данных DB2.­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

Это было полезно?

Решение

Управляющее резюме:Да, если в вашей базе данных есть служба очереди сообщений.

Вы можете поместить сообщение в очередь, и процессор очереди обработает его асинхронно.

  • Оракул:очереди
  • SQL-сервер:сервисный брокер
  • БД2:брокер событий

Для «чистых» языков хранимых процедур (PL/Sql или T-Sql) ответ отрицательный, поскольку он работает против фундаментальной модели транзакций, имеющейся в большинстве баз данных.

Однако если в вашей базе данных есть механизм организации очередей, вы можете использовать его для получения того же результата.

Другие советы

В MS Sql Server 2005 попробуйте хранимые процедуры Service Broker и/или CLR.Я не думаю, что что-то встроено непосредственно в TSQL.

Похоже, вам нужно выполнить некоторые запланированные задания с помощью Cron (или эквивалента Windows).Вы можете использовать первоначальный вызов хранимой процедуры, чтобы установить какой-то флаг в БД, который затем периодически проверяется заданием cron.Если вам нужна определенная задержка перед выполнением второго задания, вы сможете сделать это, запланировав задачу заданием cron.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top