我有兩列是'Name'和'PayDay'。'Payday'是日期類型,'Name'是nvarchar。我不知道在他/她的發薪日到來前兩天,我能否收到一封人名姓名的電子郵件。例如'姓名'是約翰和'發薪日'是12.5.2015。我需要在10.5.2015中收到一封包含姓名'約翰'的電子郵件。我做了一項研究,發現觸發器是一個很好的選擇。我可以爲觸發器和郵件服務提供任何建議。謝謝。SQL在日期到來之前發出警告
0
A
回答
2
我們也有類似的情況,我們在預計完成日期之前通知百分比進度。我認爲觸發器不會成爲你正在尋找的解決方案。
在我們的例子中,我開發了一個簡單的存儲過程來讀取所有的表值,預計在x天內完成。然後,我使用這個select並將結果連接成一個參數。如果這個長度大於0,那麼我發送了電子郵件。
收發郵件我使用的代碼是:
EXEC msdb.dbo.sp_send_dbmail
@profile_name='SQLMail', -- Your email profile name here
@recipients'[email protected]omain.com;[email protected];',-- Recipients emails
@subject='Projects nearing completion', -- Subject line
@[email protected] -- String built above
有很多很好的導遊對電子郵件在那裏,包括所有的設置。
爲了執行此操作,我從SQL服務器代理運行它,並將其安排在午夜後運行。這意味着我總是會收到一封新郵件,但我每天只收到一封電子郵件。如果您嘗試通過觸發器執行此操作,則每次寫入表時都會收到一封電子郵件。
如果您有任何進一步的問題,請給我留言,我會看看我可以做些什麼來幫助。
2
DECLARE @t TABLE(
Name NVARCHAR(50),
PayDay DATE
)
INSERT INTO @t (Name, PayDay)
VALUES (N'Jonh 1', '20151203'), (N'Jonh 2', '20151201')
DECLARE @date DATE = DATEADD(DAY, 2, GETDATE())
IF EXISTS(SELECT 1 FROM @t WHERE PayDay = @date) BEGIN
DECLARE @recipients NVARCHAR(MAX)
SELECT @recipients = STUFF((
SELECT ', ' + Name
FROM @t
WHERE PayDay = @date
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, CONVERT(VARCHAR(10), @date) + ':')
EXEC msdb.dbo.sp_send_dbmail
@recipients = '[email protected]',
@subject = 'caption',
@body = @recipients
END
數據庫郵件上面
相關問題
- 1. PHP到Oracle日期警告
- 2. ngOnDestroy在退出之前發出警告用戶
- 3. 在刪除一行UITableView之前發出警告
- 4. 在承諾掌握之前,讓IntelliJ發出警告
- 5. SQL加入上之前出廠的最近日期日期
- 6. 是否有一個設置讓XCode在發出警告之前發出提示?
- 7. 警告消息/彈出日期/時間
- 8. 使用asp.net離開頁面之前發出警告?
- 9. SQL選擇將來的日期並且不會在此日期之前結束
- 10. MongoImport日期在世紀之前發生
- 11. Kohana日期警告信息
- 12. PHPDocumentor日期問題警告
- 13. Lubridate解析日期警告
- 14. 在WiX中發出警告
- 15. mysql_fetch_array發出警告
- 16. MySQL - 在插入之前創建觸發器來替換日期
- 17. SQL約束:日期A在日期B之前 - 如何?
- 18. 在AD帳戶登錄時發出警告用戶發佈日期
- 19. MySQL在日期之前與SUM之前加SUM並在此日期之前
- 20. 警報即將到來之前
- 21. 在執行sql代碼之前顯示警告
- 22. Oracle SQL中的日期之前
- 23. Javascript日期從當前日期到3年之前的驗證
- 24. SQL Server 2008 - 獲取之前和未來日期的代碼
- 25. 出發日期後到達日期
- 26. 在JSP轉發之前顯示JavaScript警告
- 27. SQL當前和未來日期
- 28. 如何在Emacs中殺死臨時緩衝區之前發出警告?
- 29. 在會話超時之前顯示彈出警告
- 30. 出生日期在SQL Server 2014中存儲爲未來日期
在SQL代理+代碼+日常工作,我不知道什麼是關於觸發器......他們只在修改(INSERT,UPDATE,DELETE)數據 – Simone
你觸發應設置一個代理作業,以便在給定時間每天查詢表格,並在兩天之後發送具有發薪日的電子郵件名稱 – Raj