SQL仅在查询返回结果时才基于查询结果发送电子邮件

时间:2019-12-12 18:31:50

标签: sql sql-server email

我有一个表,其中包含“订单”和“按日期发货”之类的字段。 我可以创建一个查询,向我显示所有订单及其发货日期。 然后,我可以对其进行修改以仅向我显示需要在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';

如何找出我的个人资料名称?我尝试去“管理”>“数据库邮件”并发送测试电子邮件,但没有成功。

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

1 个答案:

答案 0 :(得分:0)

以下是步骤:  1.使用变量传递需要在24小时内发货的COUNT个订单。 DECLARE @NumOrders INT =(从数据库.schema.table中选择COUNT(*),其中日期<= 24小时(日期diff / dateadd在这里起作用)  2.现在:

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