Pergunta

É possível chamar um procedimento armazenado de outro procedimento armazenado de forma assíncrona?

Editar: Especificamente, estou trabalhando com um banco de dados DB2.­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

Foi útil?

Solução

Sumário executivo:Sim, se o seu banco de dados tiver um serviço de fila de mensagens.

Você pode enviar uma mensagem para uma fila e o processador da fila a consumirá de forma assíncrona.

  • Oráculo:filas
  • Servidor SQL:corretor de serviços
  • DB2:corretor de eventos

Para linguagens de procedimento armazenado "puras" (PL/Sql ou T-Sql), a resposta é não, pois funciona contra o modelo de transação fundamental que a maioria dos bancos de dados possui.

No entanto, se o seu banco de dados tiver um mecanismo de enfileiramento, você poderá usá-lo para obter o mesmo resultado.

Outras dicas

Com o MS Sql Server 2005, experimente o Service Broker e/ou procedimentos armazenados CLR.Não acho que haja algo incorporado diretamente no TSQL.

Parece que você precisa implementar alguns trabalhos agendados com o Cron (ou Windows Equiv).Você pode usar a chamada proc armazenada inicial para definir algum tipo de sinalizador no banco de dados, que é verificado periodicamente por um cron job.Se você precisar de um atraso específico antes da execução do segundo trabalho, poderá fazer isso agendando a tarefa pelo cron job.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top