Асинхронные вызовы хранимых процедур

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

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

24.08.2008 23:43:00
3 ОТВЕТА
РЕШЕНИЕ

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

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

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

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

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

5
25.08.2008 00:49:30

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

1
25.08.2008 00:35:41

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

0
25.08.2008 00:42:57