msdb.dbo.sp_send_dbmail使用isull时不发送消息

问题描述 投票:0回答:1

我正在使用msdb.dbo.sp_send_dbmail根据查询结果发送电子邮件。直到我在查询中使用并且为null之前,它都可以正常工作。查询返回正确的结果,但不会触发消息。当所讨论的字段不为空时,它可以正常工作。

我想对照检查日期验证builddate。当它们不匹配时,我想发送电子邮件。对于表未填充且builddate为null的情况,我使用了nullull。

我的基本查询如下:

 SELECT 
 ISNULL(MAX(convert(date,Builddate)),DATEADD(YEAR,-10,GETDATE())) AS 
 [builddate],
 CONVERT(VARCHAR(10),GETDATE(),121)AS [checkdate]
 FROM dbo. XXXX_BPCCustomer_Test
 HAVING  ISNULL(MAX(convert(date,Builddate)),DATEADD(YEAR,-10,GETDATE())) 
 <>CONVERT(VARCHAR(10),GETDATE(),121)

结果为builddate = 2010-01-03和checkdate = 2020-01-3

推送电子邮件的代码如下:

 DECLARE             @recordcount INT

 SELECT @recordcount = ISNULL(COUNT(*),0) 


 FROM [YCH-REPORTING\YCHANALYTICS].[x3v7].[dbo].[Dataset_BPCCustomer_Test]

 HAVING  ISNULL(MAX(convert(date,Builddate)),DATEADD(YEAR,-10,GETDATE())) 
 <>CONVERT(VARCHAR(10),GETDATE(),121)



 IF (@recordcount > 0)

 BEGIN

 EXEC msdb.dbo.sp_send_dbmail
  @profile_name = 'SQL Mail',
  @recipients = 'john.XXXXXXXXX.com;XXXXXXXXXXXXXXX',
  @query = 'SELECT 
        ISNULL(MAX(convert(date,Builddate)),DATEADD(YEAR,-10,GETDATE())) AS 
  [builddate],
        CONVERT(VARCHAR(10),GETDATE(),121)AS 
  [checkdate],"Dataset_BPCCustomer_Test" as [Table]
        FROM [XXXXXX\YCHANALYTICS].[x3XX].[dbo]. 
  [Dataset_BPCCustomer_Test]
        HAVING  
  ISNULL(MAX(convert(date,Builddate)),DATEADD(YEAR,-10,GETDATE())) 
  <>CONVERT(VARCHAR(10),GETDATE(),121)'
        ,

  @subject = ' DataSet did not update or isnull',
--@attach_query_result_as_file = 1,
--@query_result_header = 0,
  @body =0;
  END

似乎没有在处理isull语句?任何建议和感谢。

sql-server tsql
1个回答
0
投票
每个都应该是两个单引号(撇号:]

@query

© www.soinside.com 2019 - 2024. All rights reserved.