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

问题描述 投票:-1回答:1

是否有一种方法可以在这些日期到来时通过电子邮件自动提醒并从同一表发送行信息,例如:

在下表中,我们必须使用不同日期的列,DUEDATE需要作为远征的提醒,而EXPDV是DUEDATE前15天的另一条提醒,因此,当任何一行中的某个日期到来时,我都希望将其发送并自动发送。通过电子邮件提醒带有行信息(PSLOT,PSQRCV,ETC)从该表中,您有什么想法吗?

DATES For reminders

sql-server tsql
1个回答
0
投票
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
您可以创建作业并运行此光标。我还没有测试。因此,您应该在测试期间使自己成为收件人。
© www.soinside.com 2019 - 2024. All rights reserved.