0

如何在@query parameterin 中传递多个查询sp_send_dbmail

例如:

select count(*) from TableA
IF count(*)/ @@rowcount = 0  
Exec sp_send_dbmail @profile_name = xx, @recipients = 'xx@abc.com',@subject = 'Test', @body= ' No rows';
IF count(*)/ @@rowcount > 0
Exec sp_send_dbmail @profile_name = xx, @recipients = 'xx@abc.com',@subject = 'Test', 
@body= ' xx rows';

我没有收到任何错误消息,但它在第一个 select 语句之后停止。

4

1 回答 1

1

当您这样做时,select count(*) from TableA您不会将值保存在某处,它只会执行并返回查询的结果。这就是为什么if声明没有触发的原因。你可以这样做:

DECLARE @c AS int
SET @c = (select count(*) from TableA)

IF @c = 0
Exec sp_send_dbmail @profile_name = xx, @recipients = 'xx@abc.com',@subject = 'Test', @body= 'No rows';

IF @c > 0
Exec sp_send_dbmail @profile_name = xx, @recipients = 'xx@abc.com',@subject = 'Test', 
@body= ' xx rows';

尽管我对将这种逻辑放在 SQL 端有一些保留意见。但是由于我不知道您是如何使用它的,所以它现在应该可以使用。

于 2012-10-11T15:16:17.437 回答