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' 执行语句