sp_send_dbmail即使条件为false也发送邮件-SQL
我在存储过程中有一个IF语句,如下所示:sp_send_dbmail即使条件为false也发送邮件-SQL,sql,select,sendmail,Sql,Select,Sendmail,我在存储过程中有一个IF语句,如下所示: BEGIN TRY IF EXISTS (SELECT which I have confirmed returns no results, has a variable called from another table in the where clause) BEGIN EXEC msdb.dbo.sp_send_dbmail @profile_name
BEGIN TRY
IF EXISTS (SELECT which I have confirmed returns no results, has a variable called from another table in the where clause)
BEGIN
EXEC msdb.dbo.sp_send_dbmail
@profile_name = @dynamic_profile,
@recipients = @dynamic_recipient,
@subject = @subjectline,
@body = @mailHTML,
@body_format = 'HTML';
END
END TRY
这与每15分钟运行一次的作业有关。
为什么当IF语句要求在select没有返回结果的情况下跳过邮件发送时,它一直向我发送空白邮件
My NOCOUNT设置为ON(打开)请尝试-改为:
IF (SELECT COUNT(*) FROM whatever) > 0
BEGIN
--MAIL
END
在这里,如果没有看到实际的子查询,就没有什么可以说的了。发布子查询,如果您希望它保持私有,那么只需调用
表a
,表b
,字段a
,字段b
,表a.字段b
,table_b.field_b
etc您确定SELECT永远不会返回任何结果吗?您是否尝试将分析软件附加到dbms以查看每15分钟实际执行的操作?为什么>1
为什么不=1
?除此之外,这可能无法解决问题,或者您能否解释一下,如果“it”(结果)不存在,为什么可以执行IF EXISTS
块(并且使用您的代码不会执行相同的事情)?@DrCopyPaste谢谢您指出这一点。复制粘贴的种类。:)在没有使用NOCOUNT并且返回空白结果集的情况下,count()很可能会消除假阳性。但我认为这不会解决任何问题,最有可能的是OP的SELECT
被调用时使用了一些意外的参数,这些参数会导致结果,这还有什么可以解释的呢?我试过测试它,但是我想不出一种方法来重现OP所宣称的。谢谢各位。如果。。。计数(*)有效,但在我的选择中有一个ISNULL。。抱歉浪费你们的时间,伙计们!