Асинхронные вызовы хранимых процедур - PullRequest
5 голосов
/ 25 августа 2008

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

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

Ответы [ 3 ]

5 голосов
/ 25 августа 2008

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

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

  • Oracle: очереди
  • Сервер SQL: сервисный брокер
  • DB2: брокер событий

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

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

1 голос
/ 25 августа 2008

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

0 голосов
/ 25 августа 2008

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

...