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

Emailing from SQL Server stored procedure with set-based logic, avoiding cursors

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

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

除了需要发送给多个收件人的具有相同内容的电子邮件外,您可以将多个收件人添加到 @recipients@copy_recipients/@blind_copy_recipients,在为了发送多封电子邮件,您必须为每封电子邮件调用一次 sp_send_dbmail。因此,您需要在某种形式的循环中调用它,因为您不能在基于集合的查询中调用存储过程。

从技术上讲,您 可以 使用基于集合的查询生成一些 sql 到一个变量中,该变量将包含一次对 sp_send_dbmail 的调用发送,然后执行该语句,但这可能有点 messy/less 可读性。