【问题标题】:SQL Execute per each result row每个结果行的 SQL 执行
【发布时间】:2010-12-22 03:14:57
【问题描述】:

我已经在谷歌上搜索了一段时间,但我似乎无法找到答案。我正在尝试在存储过程中使用 SQL Server 2005 中的数据库邮件,其想法是为查询中的每一行发送单独的邮件,每封邮件取决于驻留在行中的地址。

假设有 15 - 50 行产品订单,其中包含以下数据:ID、CustomerName、CustomerEmail、ProductName、ProductCategory。每一行都包含客户电子邮件以及产品类别。我需要使用特定于他们自己行的个人数据向每个客户发送一封确认电子邮件,以及根据产品类别将实际订单邮件发送给不同的公司人员。

我怎样才能像这样动态发送数据库邮件?

提前致谢!

编辑 1: 数据集等不是一个选项,它必须专门在 SQL Server 2005 上运行。我想我得看看游标。

【问题讨论】:

    标签: sql function database-mail


    【解决方案1】:

    不,不可能。发送数据库邮件是对存储过程的调用,这在查询和函数中都是不允许的。

    您必须逐一发送每封邮件。您可以在存储过程中使用服务器上的游标或在客户端迭代表。

    【讨论】:

    • 回到这里。是的,谢谢你,一年来我什至不知道游标是什么,但在你的建议之后,事情很快就开始了。 :)
    【解决方案2】:

    您的意思是每次添加新行(例如下订单)?如果是这样,您可以在每次插入或更新行时使用Trigger 发送电子邮件。

    【讨论】:

    • 有一个作业每隔几个小时左右运行一次,需要检查所有新行。我想触发器是这样做的一个很好的选择,但我不确定在数据足够完整以进行邮寄之前,它会如何对需要存在的大量其他数据做出反应。实际的表在所有地方都有关系,因此取决于触发器可能过早触发的事情。
    【解决方案3】:

    使用 DataSet 将表放入内存 然后运行 ​​foreach DataRow ,获取邮件并发送它......

    【讨论】:

      猜你喜欢
      • 2021-03-15
      • 1970-01-01
      • 1970-01-01
      • 2020-08-13
      • 1970-01-01
      • 2020-12-12
      • 2018-10-17
      • 1970-01-01
      • 2015-12-27
      相关资源
      最近更新 更多