请求编写SQL存储过程:同步主产品与V结尾变体的user_def_1字段
SQL存储过程实现物料字段匹配校验与修正
以下是满足需求的SQL存储过程,既能检测主物料与变体物料的user_def_1不匹配记录,也能自动修正变体的user_def_1值使其与主物料保持一致:
CREATE PROCEDURE Sync_Item_UserDef1 AS BEGIN SET NOCOUNT ON; -- 筛选所有不匹配的主物料与变体物料记录 SELECT main.Item_no AS 主物料编号, main.user_def_1 AS 主物料user_def_1值, variant.Item_no AS 变体物料编号, variant.user_def_1 AS 变体当前user_def_1值 INTO #MismatchedItems FROM Item main JOIN Item variant ON variant.Item_no = main.Item_no + 'V' WHERE RIGHT(main.Item_no, 1) <> 'V' AND main.user_def_1 <> variant.user_def_1; -- 输出检测结果并执行修正 IF EXISTS(SELECT 1 FROM #MismatchedItems) BEGIN PRINT '发现以下不匹配的物料记录:'; SELECT * FROM #MismatchedItems; -- 更新变体物料的user_def_1值,与主物料对齐 UPDATE variant SET variant.user_def_1 = main.user_def_1 FROM Item main JOIN Item variant ON variant.Item_no = main.Item_no + 'V' JOIN #MismatchedItems mis ON main.Item_no = mis.主物料编号 AND variant.Item_no = mis.变体物料编号; PRINT '已完成不匹配记录修正,共处理 ' + CAST(@@ROWCOUNT AS VARCHAR) + ' 条记录'; END ELSE BEGIN PRINT '所有主物料与变体物料的user_def_1值均匹配,无需操作'; END DROP TABLE IF EXISTS #MismatchedItems; END
存储过程说明
- 先通过临时表
#MismatchedItems定位所有主物料(编号不以V结尾)和对应变体(主物料编号+V)的user_def_1不一致记录 - 输出不匹配明细用于核查,随后自动将变体的
user_def_1同步为主物料的值 - 无匹配异常时输出提示信息
使用方式
- 手动执行:在SQL环境中运行
EXEC Sync_Item_UserDef1;即可触发校验与修正 - 夜间调度:通过SQL Server代理创建定时作业,设置每日夜间执行计划,调用该存储过程即可实现自动运行
注意事项
- 执行该存储过程需要拥有
Item表的查询和更新权限 - 首次执行建议先注释掉
UPDATE语句,仅查看检测结果,确认无误后再启用修正逻辑 - 建议定期备份
Item表,避免意外数据变更
内容的提问来源于stack exchange,提问作者user2912475
相关产品推荐
相关产品推荐

