【问题标题】:SQL Send an email based on Query Results, only if query returns resultsSQL 根据查询结果发送电子邮件,仅当查询返回结果时
【发布时间】:2020-04-06 05:05:13
【问题描述】:

我有一个表格,其中包含 Order 和 Ship By Date 等字段。 我可以创建一个查询,显示我的所有订单及其发货日期。 然后我可以将其修改为仅显示需要在 24 小时内发货的订单。 我想创建一个包含所有这些 24 小时订单的电子邮件群。但是,如果没有需要发货的订单,我不希望它发送一封空邮件,我希望它什么都不发送。

我知道如何通过 SSRS 创建订阅。

顺便说一句,如果我们能够通过 SSRS 发送订阅,这是否意味着我们已经设置了数据库邮件配置文件?那么我可以使用这样的代码吗?

  EXEC msdb.dbo.sp_send_dbmail
    @profile_name = 'your mail profile',
    @recipients = 'dba@company.com',
    @body = 'results -- some body goes here',
    @subject = 'Sensible subject goes here ',
-- to send file attachments (if any)
    @file_attachments = 'L:\logs.TXT',
  -- send query results 
    @query = 'Select Cast(case when count(inventory.items) > 1000 then 1 else 0 End as bit) as SendAlert
From Inventory';

如何知道我的 profile_name 是什么?我尝试转到管理 > 数据库邮件并发送测试电子邮件,但没有成功。

如果这意味着我没有设置个人资料,我假设我将不得不通过数据驱动订阅来执行此操作?也许我会离开加入我试图发送到查询的电子邮件地址并发送到该字段的电子邮件?这样,如果没有结果,就不会发送任何电子邮件。这行得通吗?

【问题讨论】:

    标签: sql sql-server email


    【解决方案1】:

    以下是步骤: 1. 使用变量传递需要在 24 小时内发货的订单的 COUNT。 DECLARE @NumOrders INT = (SELECT COUNT(*) FROM database.schema.table WHERE date

    IF @NumOrders > 0
    BEGIN
        Write a cursor to get all orders and emails.... <= 24hrs
        Send email
    END 
    

    【讨论】:

      猜你喜欢
      • 2021-01-22
      • 2023-01-09
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多