通过基于集合的逻辑从SQL Server存储过程发送电子邮件,避免使用游标

时间:2015-06-19 14:59:15

标签: sql sql-server email stored-procedures cursor

我的IT部门对游标有一种健康的蔑视,但我需要遍历数据集以从SQL Server 2014发送电子邮件。使用基于集合的逻辑执行此操作的最佳做​​法是什么?

1 个答案:

答案 0 :(得分:1)

据推测,您正在使用数据库邮件通过SQL Server发送电子邮件,在这种情况下,通过调用sp_send_dbmail存储过程发送电子邮件。

除了需要发送给多个收件人的具有相同内容的电子邮件之外,您只需向@recipients@copy_recipients / @blind_copy_recipients添加多个收件人即可发送多封电子邮件,您必须为每封电子邮件调用一次sp_send_dbmail。因此,您需要在某种形式的循环中调用它,因为您无法在基于集合的查询中调用sproc。

从技术上讲,你可以使用基于集合的查询来生成一个sql到一个变量中,该变量将包含一个sp_send_dbmail调用每个要发送的电子邮件,然后执行该语句,但这可能会得到一个有点凌乱/不太可读。