Подзапрос вернул более 1 значения - PullRequest
1 голос
/ 24 мая 2011

Мне нужно настроить работу в SQL Server 2008, чтобы она запускалась в первый месяц месяца, отправляя электронное письмо нашим клиентам. Тем не менее, я не знаю, как просмотреть результаты подзапроса.

В результате этого сообщения об ошибке:

Подзапрос вернул более 1 значения. Это не разрешено, когда подзапрос следует =,! =, <, <=,>,> = или когда подзапрос используется как выражение.

Вот соответствующий код:

SET @Recipients =(SELECT DISTINCT a.EMail
         FROM   a
        --approximately 600 email addresses 

SET @MailSubject = 'Customer News' 
SET @MailRecipients = @Recipients
SET @MailMessage =  'Dear customer, Attached is your customer news letter.'

SET @FileName = N'E:file\to\be\attached.doc'

EXEC msdb.dbo.sp_send_dbmail @recipients = @MailRecipients, 
    @body = @MailMessage,
    @blind_copy_recipients='misj@mikl.org', 
    @subject = @MailSubject,
    @file_attachments  = @FileName

Ответы [ 2 ]

4 голосов
/ 24 мая 2011

Ошибка здесь, когда у вас есть много строк, пытающихся быть назначенными на одну переменную

SET @Recipients =(SELECT DISTINCT a.EMail
     FROM   a
    --approximately 600 email addresses 

Вам нужно изменить его на отдельный список, таким образом

SET @Recipients = STUFF(
           (select DISTINCT ';' + CAST(a.EMail AS varchar(max))
           FROM a FOR XML PATH ('')
           )
          ,1,1, '') 

Примечание: @Recipients должен быть varchar (max)

0 голосов
/ 24 мая 2011

проблема @recipients = @MailRecipients. Он ожидает строку (адрес электронной почты), и вы даете ему набор записей.

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