SQL Server 2008 R2 - sp_send_dbmail - PullRequest
       24

SQL Server 2008 R2 - sp_send_dbmail

0 голосов
/ 16 марта 2019

В начале я отмечаю - я не специалист по написанию кода.Мне нужна ваша помощь.Я хочу внедрить систему уведомлений по электронной почте через sp_send_dbmail.

Код:

USE msdb
go

SET QUOTED_IDENTIFIER OFF
SET ANSI_NULLS ON

EXEC sp_send_dbmail @profile_name='PROFILENAME',
    @recipients='myemail@email.com',
    @query_result_header=0,
    @attach_query_result_as_file=0,
    @query="select Kod,Nazwa from DATABASE.dbo.Towar where Kod NOT LIKE '%?%' and (AsId=205 or AsId=304 or AsId=289 or AsId=321 or AsId=306 or AsId=217 or AsId=261) and Aktywny=1 ORDER BY Kod",
    @body_format="text",
    @subject='SUBCJECT'
GO

SQL-запрос работает и отправляет электронную почту, но также отправляет пустые строки.например.Как от них избавиться?

1916                 SER TWAROGOWY WIEJSKI LUZ                                                                                                                                                                                                                  

Я бы также хотел, чтобы sp_send_dbmail отправлял электронное письмо только тогда, когда запрос возвращает данные.Если нет данных - не отправляет сообщения.

1 Ответ

1 голос
/ 16 марта 2019

Я думаю, вам нужно IF, если вы хотите условное письмо:

IF EXISTS (select Kod, Nazwa from DATABASE.dbo.Towar where Kod NOT LIKE '%?%' and AsId IN (205, 304, 289, 321, 306, 217, 261) and Aktywny = 1)
BEGIN
    EXEC sp_send_dbmail @profile_name='PROFILENAME',
        @recipients='myemail@email.com',
        @query_result_header=0,
        @attach_query_result_as_file=0,
        @query='select Kod, Nazwa from DATABASE.dbo.Towar where Kod NOT LIKE ''%?%'' and AsId IN (205, 304, 289, 321, 306, 217, 261) and Aktywny=1 ORDER BY Kod',
        @body_format='text',
        @subject='SUBCJECT';
END;

GO
...