Sql server 如何使用TSQL对作业进行自动提醒?
有没有办法在这些日期到来时通过电子邮件自动提醒,并从同一个表中发送行信息,例如: 在下表中,我们必须列出不同日期的列,DUEDATE需要是expedition的提醒,EXPDV是DUEDATE前15天的另一个提醒,因此当任何一行的其中一个日期到来时,我想通过电子邮件发送并自动提醒该表中的行信息(PSLOT、PSQRCV等),有什么想法吗Sql server 如何使用TSQL对作业进行自动提醒?,sql-server,tsql,Sql Server,Tsql,有没有办法在这些日期到来时通过电子邮件自动提醒,并从同一个表中发送行信息,例如: 在下表中,我们必须列出不同日期的列,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