【问题标题】:Emailing from SQL Server stored procedure with set-based logic, avoiding cursors使用基于集合的逻辑从 SQL Server 存储过程发送电子邮件,避免使用游标
【发布时间】:2015-06-19 14:59:14
【问题描述】:

我的 IT 部门对游标不屑一顾,但我需要遍历数据集以从 SQL Server 2014 发送电子邮件。使用基于集合的逻辑执行此操作的最佳实践是什么?

【问题讨论】:

  • 您可以将数据收集到临时文件中。表,然后使用光标。这样,您在发送电子邮件时就不会为实际数据打开光标——而且我没有看到使用光标的问题。

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


【解决方案1】:

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

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

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

【讨论】:

  • 嗨,Ada,是的,我肯定会使用 sp_send_mail。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-01
  • 2014-07-30
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
  • 1970-01-01
  • 2011-06-26
相关资源
最近更新 更多