你好 Stackoverflow 社区!
我有一个查询,我发现很难在表格中找到答案。
我有一个简单的存储过程:
CREATE PROCEDURE [dbo].[spSendEmail]
@To NVARCHAR(100),
@Subject NVARCHAR(200),
@Body NVARCHAR(MAX),
@FileAttachments NVARCHAR(MAX) = null
AS
BEGIN
EXEC [msdb].[dbo].sp_send_dbmail
@profile_name= 'Test Mail',
@recipients=@To,
@subject=@Subject,
@body=@Body,
@body_format = 'HTML',
@file_attachments= @FileAttachments
END
我想从一个查询中调用这个结果集来传递所需参数的每一行,即@To
我的结果集查询的简化版本,返回 4 列:
SET ROWCOUNT 0
SELECT s.EMAIL_ADDRESS, s.Date,s.Code,s.Description
INTO #tempMyDetails
FROM ContactInfo s
从此表中正在执行以下操作:
DECLARE @Subject NVARCHAR(200)
SET @Subject = 'My Email'
DECLARE @sql As NVarchar(MAX);
SET @sql = N'';
SELECT @sql = @sql + ' EXEC spSendEmail '''
+ t.EMAIL_ADDRESS + '''' + ',' + '''' + @Subject + ': ' + t.Code + '''' + ','
dbo.fnDetailsBody(t.Code,t.Date,t.Description)
FROM #tempDetails t
EXEC (@sql);
DROP TABLE #tempDetails;
注意我的函数 fnDetailsBody() 根据电子邮件的参数返回一个 NVARCHAR 字符串的 HTML。
但是,我确实有这个工作,向我的结果表中的每个电子邮件返回发送电子邮件。
这是最好/唯一的方法来解决这个问题而不使用一段时间/光标向每一行发送电子邮件吗?
多谢。