我对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 结果都强烈建议不要采用这种策略。
那么,最好的方法是什么呢?