【发布时间】:2014-02-04 16:25:39
【问题描述】:
我对做更多涉及的 SQL 工作还很陌生。
我的目标是使用查询结果发送电子邮件以推动电子邮件的创建。我打算在 SQL Server 2008 上创建一个存储过程并每周安排两次(最多有 20 封电子邮件,这不会是沉重的电子邮件负载)。
SELECT ProjectCodes.ProjectCode, COUNT(Projects.ProjectsID), ProjectApprovers.EmailApprover
FROM Projects
INNER JOIN ProjectCodes
ON Projects.ProjectCodesID=ProjectCodes.ProjectCodesID
INNER JOIN ProjectApprovers
ON Projects.ProjectCodesID=ProjectApprovers.ProjectCodesID
WHERE ProjectApprovers.IsPrimaryApprover=1
group by ProjectCodes.ProjectCode, ProjectApprovers.EmailApprover
这会返回类似于:
+-------------+-------+--------------+
| ProjectCode | Count | EmailAddress |
+-------------+-------+--------------+
| Code1 | 4 | Email1 |
| Code2 | 2 | Email2 |
| Code3 | 2 | Email3 |
| Code4 | 3 | Email4 |
+-------------+-------+--------------+
我想做的基本上是循环遍历这个结果,运行以下命令:
EXEC msdb.dbo.sp_send_dbmail
@recipients= 'email1', --email address from above query
@subject='Test email',
@body='You have X projects waiting' -- where X is the COUNT() term
对于每一行。
我的理解是,如果我使用游标,我可以对每个条目进行一些简单的操作,但是,我发现的所有文档和 Stack Overflow 结果都强烈表明这不是一个好策略。
做这样的事情最好的方法是什么?
【问题讨论】:
标签: sql sql-server sql-server-2008 stored-procedures