是否有一种方法可以在这些日期到来时通过电子邮件自动提醒并从同一表发送行信息,例如:
在下表中,我们必须使用不同日期的列,DUEDATE需要作为远征的提醒,而EXPDV是DUEDATE前15天的另一条提醒,因此,当任何一行中的某个日期到来时,我都希望将其发送并自动发送。通过电子邮件提醒带有行信息(PSLOT,PSQRCV,ETC)从该表中,您有什么想法吗?
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
您可以创建作业并运行此光标。我还没有测试。因此,您应该在测试期间使自己成为收件人。