You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL Server存储过程的收件人列表中移除指定邮箱地址

SQL Server 移除存储过程关联报表收件人邮箱操作说明

现有方案说明

你当前编写的硬编码更新语句,在确认p_rpt_daily_alarm对应的当前收件人确实为abc@test.com; 123@test.com; 456@test.com、且执行操作前没有其他人员修改过该条配置的前提下,可以正常运行,执行后会直接将目标邮箱从收件人列表中移除。

通用无硬编码更新方案(推荐)

如果不想硬编码完整收件人列表,避免覆盖其他人员提前更新的收件人配置,可以使用字符串替换的方式实现自动移除指定邮箱,兼容邮箱在列表开头、中间、结尾的不同场景:

步骤1:先执行查询验证,确认替换结果符合预期

SELECT 
    Recipients AS 原收件人列表,
    REPLACE(REPLACE(Recipients, 'abc@test.com; ', ''), 'abc@test.com', '') AS 替换后收件人列表
FROM [BCCDW].[Config].[StoredProcExecution]
WHERE SPName = 'p_rpt_daily_alarm'

步骤2:验证无误后执行更新操作

BEGIN TRANSACTION

UPDATE [BCCDW].[Config].[StoredProcExecution] 
SET Recipients = TRIM(';' FROM REPLACE(REPLACE(Recipients, 'abc@test.com; ', ''), 'abc@test.com', ''))
WHERE SPName = 'p_rpt_daily_alarm'

-- 执行后先查询确认更新结果
SELECT Recipients FROM [BCCDW].[Config].[StoredProcExecution] WHERE SPName = 'p_rpt_daily_alarm'

-- 确认结果正确再提交,错误则执行ROLLBACK
-- COMMIT;
-- ROLLBACK;

注意事项

  • 如果收件人列表的分隔符前后没有空格,可以调整REPLACE的匹配规则,去掉参数里的空格即可
  • 生产环境操作前务必做好配置备份,避免误改数据导致报表发错或者漏发
  • 操作完成后可以触发一次测试执行,确认收件人配置生效

内容的提问来源于stack exchange,提问作者Amit Joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:36:03