SQL отправляет запрос на электронную почту через msdb.dbo.sp_send_dbmail: ошибка в одинарных кавычках. - PullRequest
0 голосов
/ 10 ноября 2018

В поле @query, указанном ниже, я указываю свой запрос, используя 'в начале и в конце. Блок ниже работает.

EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'SendCallCenter',
    @recipients = 'person@email.edu',
    @subject = 'Previous_No_Shows',
    @query = 
    N'Select
        [NETEWLifePRODDBV1.8.7].[dbo].[tblClient].[fldFirstName],[fldLastName],[fldLocation],[fldJHEDId], 
        [NETEWLifePRODDBV1.8.7].[dbo].[tblClientSchedule].[fldDuration],[fldDate]
    FROM 
        [NETEWLifePRODDBV1.8.7].[dbo].[tblClientSchedule] Inner Join [NETEWLifePRODDBV1.8.7].[dbo].[tblClient]
    on
        [NETEWLifePRODDBV1.8.7].[dbo].[tblClientSchedule].[fldClientId]= [NETEWLifePRODDBV1.8.7].[dbo].[tblClient].[fldClientId]
   WHERE
        [fldApptOutcomeId] = 4;',
    @attach_query_result_as_file = 1,
    @query_attachment_filename = 'Data.csv' 

Однако, когда я ввожу два новых параметра даты и времени в WHERE, 'в этих строках прерывает строку с числовыми значениями.

enter image description here

Msg 102, Level 15, State 1, Line 13
Incorrect syntax near '17530101'.

Что я могу использовать, чтобы сохранить весь запрос в виде непрерывной строки?

Я использовал этот урок

1 Ответ

0 голосов
/ 10 ноября 2018

Вы должны избежать одиночных кавычек.

`..dd,''17530101'',getdate()....`

Если вы все сделаете правильно, вы не увидите даты синим цветом. Еще один замечательный совет отладки - установить для вашего запроса параметр

declare @sql varchar(max) = 'select ...'

И затем вы можете распечатать его, чтобы убедиться, что ваши объединения, преобразования и т. Д. Сработали.

print @sql

Например:

declare @sql varchar(max) = 'select datediff(dd,''17530101'',getdate())'
print @sql

Вы также можете использовать @sql в вашем процессе выполнения, установив @query = @sql, если вы знаете, что строка запроса верна.

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