SQL Server电子邮件队列

时间:2016-04-08 09:56:23

标签: sql sql-server email

我有一个订单表,其中经常填充新订单

订单表:

OrderID    OrderName    EmailAddress        Status
-----------------------------------------------------
1          iphone       test@gmail.co.uk    New
2          samsung      nw@gmail.com        New
3          nexus        f@gmail.com         Approved

对于每个有status = 'New'的订单行,我想设置一个每30分钟运行一次的作业,向这些收件人发送电子邮件。

1 个答案:

答案 0 :(得分:0)

根据我的理解,如果订单状态为“新”,您需要安排发送电子邮件通知的工作。

如果是,请创建以下存储过程

CREATE PROCEDURE NewOrders_Job
AS
BEGIN
    DECLARE @OrderName varchar(200), @EmailAddress varchar(200)
    SELECT
        @OrderName = ' You have a sale for '+[OrderName]+', at +'CONVERT(VARCHAR(10),GETDATE(),)'+'
        ,@EmailAddress = [EmailAddress]
    FROM [Orders table]
    WHERE 
        [Status] = 'New'


    IF(ISNULL(@EmailAddress,'')<>'')
    BEGIN
        --mail
        DECLARE
         @profile_name VARCHAR(200)
        ,@recipients VARCHAR(MAX)
        ,@copy_recipients VARCHAR(MAX)
        ,@blind_copy_recipients VARCHAR(MAX)
        ,@body VARCHAR(MAX)
        ,@body_format VARCHAR(MAX)
        ,@subject VARCHAR(MAX)  


        EXEC msdb.dbo.sp_send_dbmail 
            @profile_name = 'Your_Profile_Name'  
            ,@recipients = @EmailAddress  
            ,@copy_recipients = 'youremail@domain.com'
            ,@blind_copy_recipients = 'admin@yourdomain.com'
            ,@body = @OrderName 
            ,@body_format = 'HTML'  
            ,@subject = 'You have a new sales Order'; 
    END
END

现在,创建一个新的作业,使用上述存储过程运行30分钟