插入车辆同步存储过程详解

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

 

posted @ 2023-02-28 14:17  小小小白丶  阅读(25)  评论(0编辑  收藏  举报