sql - SQL 只有在表不为空时才执行过程?
问题描述
我有一个 SQL 查询,它告诉我我们打开的所有订单以及我们应该何时发货。我想创建一个例行的电子邮件群发,提醒人们今天需要发货的所有订单。
这是我的代码
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'AMT',
@recipients = 'test@test.com',
@body = 'results -- some body goes here',
@subject = 'Sensible subject goes here ',
@query = 'SELECT Order, ShipByDate, HoursLeft FROM OrdersTable WHERE HoursLeft < 24'
此代码有效。唯一的问题是,当没有少于 24 小时的订单或结果为空时,它会发送一封具有相同主题和正文的空表电子邮件。
我想在 EXEC 行之前有一个 if 语句,用于检查 OrdersTable 在 24 小时或更短的条件下是否为空。这可能吗?我知道 exec 你使用 IF 而不是 CASE 但我不确定如何检查表是否为空。
解决方案
声明不IF
符合您的要求吗?
IF (EXISTS (SELECT 1 FROM OrdersTable WHERE HoursLeft < 24))
BEGIN
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'AMT',
@recipients = 'test@test.com',
@body = 'results -- some body goes here',
@subject = 'Sensible subject goes here ',
@query = 'SELECT Order, ShipByDate, HoursLeft FROM OrdersTable WHERE HoursLeft < 24';
END;
推荐阅读
- android - 智能手表上的心率监测器未在 onCreate 方法中启动
- reactjs - 如何测试反应链接点击是否正在开玩笑地加载所需的组件
- java - Microsoft Graph API,使用 ADAL4J
- postgresql - Postgres:提取欺骗系统的人的 ID 和姓名
- python - PDF 绘图问题
- c# - 如何从另一个脚本 Unity C# 2D 访问任何创建的游戏对象的属性
- c - 在C中查找未知数组的大小
- php - 为什么 DOMDocument::saveHTML() 的行为在将 UTF-8 编码为样式和脚本元素中的实体时会有所不同?
- powershell - PowerShell Invoke-RestMethod 截断最后一个周期
- fortran - 使用 Minpack 求解 S 曲线