#sql-server #email #stored-procedures
#sql-сервер #Адрес электронной почты #хранимые процедуры
Вопрос:
У меня есть хранимая процедура, которая отправляла электронные письма нескольким получателям. В этом я хочу отправить двум разным получателям, используя @copy_recipients. Но я получаю синтаксическую ошибку. Как заставить это работать?
код хранимой процедуры
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'mail',
@recipients = @Mail1,
@copy_recipients = @Mail2;@Mail3,
@body =@body ,
@subject =@subject
Комментарии:
1.
@Mail2;@Mail3
— правильная концепция, плохая реализация.;
, будучи не в строке, завершает инструкцию SQL, что приводит к недопустимому синтаксису.
Ответ №1:
Вам нужно добавить ;
(точку с запятой) между адресами электронной почты, используя конкатенацию строк:
DECLARE @copy_to varchar(max)= @Mail2 ';' @Mail3
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'mail',
@recipients = @Mail1,
@copy_recipients = @copy_to,
@body =@body ,
@subject =@subject
Вы можете прочитать статью MSDN здесь
[ @recipients= ] ‘получатели’
Это разделенный точкой с запятой список адресов электронной почты для отправки сообщения. Список получателей имеет тип varchar (максимум). Хотя этот параметр необязателен, должен быть указан хотя бы один из @recipients, @copy_recipients или @blind_copy_recipients, иначе sp_send_dbmail вернет ошибку.
[ @copy_recipients= ] ‘copy_recipients’
Это разделенный точкой с запятой список адресов электронной почты, на которые нужно скопировать сообщение. Список получателей копии имеет тип varchar (максимум). Хотя этот параметр необязателен, должен быть указан хотя бы один из @recipients, @copy_recipients или @blind_copy_recipients, иначе sp_send_dbmail вернет ошибку.
Комментарии:
1. С удовольствием! 😉