Enviar alerta de tarefa do servidor SQL apenas quando uma consulta tiver linhas para retornar

6

Eu tenho uma consulta que verifica se fizemos vendas de um determinado item de estoque

select * from merchand_history where stock_code = 'zzz007' and create_timestamp >= getdate() order by create_timestamp desc

Eu gostaria de ter um trabalho de sql que envia e-mails para um usuário (acho que use o mecanismo de alerta), mas apenas se houver linhas retornadas por essa consulta.

Eu não consigo pensar em como fazer isso e me submeter ao hivemind. Eu realmente preciso de uma solução somente sql ...

    
por Paul D'Ambra 30.07.2010 / 15:26

1 resposta

6

Tente criar um procedimento armazenado como abaixo e programe-o para ser executado como um trabalho:

create procedure [dbo].[sp_send_merchant_email] 
as


Begin

declare @recordCount int 


select @recordCount = isnull(count(*), 0)
from merchand_history 
where stock_code = 'zzz007' and create_timestamp >= getdate() 
order by create_timestamp desc



IF (@recordCount > 0)
begin



EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'YourProfile',
    @recipients = '[email protected]',
    @query = 'select * from merchand_history 
                where stock_code = ''zzz007'' and create_timestamp >= getdate() 
                order by create_timestamp desc' ,
      @subject = 'Merchant Email ',
       @Body = 'Email Merchant..... ' ,
    @attach_query_result_as_file = 1 ;

End
else
begin

      EXEC msdb.dbo.sp_send_dbmail
      @profile_name = 'YourProfile',
       @recipients = '[email protected]', 
            @BODY = 'No data returned ', 
            @subject = 'Merchant Email'

End
End;
    
por 30.07.2010 / 16:36