存储过程,以便在完成日期之前30天向不同的联系人发送不同的电子邮件内容

时间:2016-04-13 06:37:16

标签: sql-server-2008 email stored-procedures

我需要在我的ms sql server management studio 2008中创建一个存储过程,以便在结束日期前30天将自动电子邮件发送到表中的每个电子邮件地址。显示'数据'与电子邮件内容相同的行的值。样品表如下。我是存储过程的新手,你可以帮我解决这个问题吗?提前致谢。 enter image description here

1 个答案:

答案 0 :(得分:1)

因此,此查询会选择您想要的数据:

SELECT email, data
FROM YourTable
WHERE [finish date] = DATEADD(d,-30,CAST(GETDATE() AS DATE))

这是一个存储过程,它使用游标逐个浏览并发送电子邮件。在管理工作室中运行此命令以创建存储过程。

之后使用uspSendEmails来运行它。

您可以使用SQL代理作业每天运行它。

CREATE PROC uspSendEmails
BEGIN
-- variables to hold values for each row
DECLARE @email VARCHAR(50)
DECLARE @data VARCHAR(50)

-- declare the cursor
DECLARE cEmails CURSOR FOR  
SELECT email, data
FROM YourTable
WHERE [finish date] = DATEADD(d,-30,CAST(GETDATE() AS DATE))

-- Open the cursor and fetch first row
OPEN cEmails
FETCH NEXT FROM cEmails
INTO @email, @data


WHILE @@FETCH_STATUS = 0   
BEGIN 

    -- Use database mail SP to send email
    EXEC sp_send_dbmail 
         @profile_name = 'Your mail profile',
         @recipients = @email,
         @subject = 'subject'
         @body=@data

    -- Get the next row
    FETCH NEXT FROM cEmails
    INTO @email, @data        
END

CLOSE cEmails
DEALLOCATE cEmails
END