CREATE PROCEDURE [dbo].[vin] --创建存储过程+名 ( @vins nvarchar(4000) --定义vins是什么数据类型 ) as begin --下面执行sql语句 MERGE INTO 目标表1 AS T --MERGE INTO 关键字为规定目标表 USING ( --USING 意思是源表,源表可以是表明,也可以是子查询出来的数据 select from tab a left join tab b on a.id=b.id left join tab c on a.id=c.id where a.vin in ( select * from string_split(@vins,',') --string_split是关系运算符,它根据指定的分隔符将字符串拆分为子字符串行 ) --这里的目的是让变量@vins使用','这个自定义的格式,这样执行exec vin 'vin1,vin2,vin3' ) AS S --的时候就条件in=select * from string_split('vin1,vin2,vin3',',') ON T.vin = S.vin --MERGE用法 on 2个表的相同值 WHEN NOT MATCHED THEN --如果目标表没有值 INSERT (字段) --插入,目标表字段数据 VALUES (S.字段)--取自源表的护具 WHEN MATCHED and t.status<>s.Status THEN --如果目标表有值,加上附加条件 update set --更新那些值 t.status=s.Status; --;结束 end --exec vin 'LURJAVBH2PA002761,LURJAVBH3PA002770,LURJAVBA8PA002203,LURJAVBW1PA300099' 执行语句
标签:存储,string,MERGE,--,vin,插入,详解,vins,id From: https://www.cnblogs.com/Xiaoxiao-bai/p/17164102.html