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