Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何使用TSQL对作业进行自动提醒?_Sql Server_Tsql - Fatal编程技术网

Sql server 如何使用TSQL对作业进行自动提醒?

Sql server 如何使用TSQL对作业进行自动提醒?,sql-server,tsql,Sql Server,Tsql,有没有办法在这些日期到来时通过电子邮件自动提醒,并从同一个表中发送行信息,例如: 在下表中,我们必须列出不同日期的列,DUEDATE需要是expedition的提醒,EXPDV是DUEDATE前15天的另一个提醒,因此当任何一行的其中一个日期到来时,我想通过电子邮件发送并自动提醒该表中的行信息(PSLOT、PSQRCV等),有什么想法吗 您可以创建作业并运行此游标。我还没有测试过。因此,在测试期间,您应该让自己成为接收者。可能的副本。提示:不使用图像的原因如下。你试过什么?你做了什么研究?哦,

有没有办法在这些日期到来时通过电子邮件自动提醒,并从同一个表中发送行信息,例如:

在下表中,我们必须列出不同日期的列,DUEDATE需要是expedition的提醒,EXPDV是DUEDATE前15天的另一个提醒,因此当任何一行的其中一个日期到来时,我想通过电子邮件发送并自动提醒该表中的行信息(PSLOT、PSQRCV等),有什么想法吗


您可以创建作业并运行此游标。我还没有测试过。因此,在测试期间,您应该让自己成为接收者。

可能的副本。提示:不使用图像的原因如下。你试过什么?你做了什么研究?哦,对不起。。。只是需要一个想法,但会把它作为建议:)看起来很棒!事实上,我也使用游标。让我试试,谢谢以色列!你好!例如,电子邮件列将从该表中删除,但我有另一个包含有效电子邮件的表,我需要使用内部联接从另一个表中选择电子邮件?是的,您应该内部联接。如果有帮助,标记为已回答。关于这一行,其中DATEDIFF(DAY,EXPDV,DUEDATE)=15 EXPDV已经有15天的减法,您使用它的原因是什么?或者为什么?如果您有一个每天更新的派生列,以显示EXPDV和DUEDATE之间的天数差异,您可以使用它。
    USE [database_name]
    GO

    SET NOCOUNT ON;

    DECLARE @count INT = 
        (
            SELECT COUNT(*) FROM dbo.TableName
            WHERE DATEDIFF(DAY, EXPDV, DUEDATE) = 15  
        )


    IF @count > 0
    BEGIN           
        DECLARE   @html     NVARCHAR(max) 
                , @subject  NVARCHAR(max) = 'Your email subject here'
                , @email    NVARCHAR(255)
                , @PSLOT    NVARCHAR(255)
                , @PSQRCV   NVARCHAR(255)
                , @ETC      NVARCHAR(255)

        DECLARE send_remider CURSOR FOR 
        SELECT email, PSLOT,PSQRCV,ETC FROM dbo.TableName
        WHERE DATEDIFF(DAY, EXPDV, DUEDATE) = 15 

        OPEN send_remider

        FETCH NEXT FROM send_remider INTO @email, @PSLOT, @PSLOT, @ETC

        WHILE @@FETCH_STATUS = 0

        BEGIN

            SET @html = 'Your message body text here....' + @PSLOT, @PSQRCV, @ETC


            EXEC msdb.dbo.sp_send_dbmail 
                  @profile_name = 'profile_name'    
                , @recipients = @email              
                , @subject = @subject
                , @body = @html
                , @body_format = 'HTML'


        FETCH NEXT FROM send_remider INTO @email, @PSLOT, @PSLOT, @ETC

        END
        CLOSE send_remider
        DEALLOCATE send_remider
        GO