批量处理sql 数据存入xml类型列

摘要:
个人记录要求:当表T1ItemCode和表T2ItemName中的数据相等时,表T2对应的ID和ItemName列中的数据将分别存储在表T1CAOZOO字段的ID元素和text元素的文本中。

个人记录

需求:当表T1 ItemCode和表T2 ItemName的数据相等时,将表T2所对应的ID和ItemName列的数据分别存入表T1 CAOZUO字段的id元素和text元素的文本中。

批量处理sql 数据存入xml类型列第1张

下面用存储过程循环来实现批量处理sql 数据存入xml类型数据:

CREATE PROCEDURE [dbo].[PRE_XMCus]

AS
BEGIN
    --创建临时表
    CREATE TABLE #TEMPS (Dspid uniqueidentifier NULL,ItemCode VARCHAR(100) NULL,Id uniqueidentifier NULL,ItemName NVARCHAR(100) NULL,ROWID INT NULL)
    DECLARE @BatchID uniqueidentifier
    SET @BatchID =NEWID()
    
    INSERT INTO #TEMPS
    (Dspid,ItemCode,Id,ItemName,ROWID)    
    SELECT  @BatchID AS Dspid,T1.ItemCode,T2.Id,T2.ItemName,ROW_NUMBER() OVER(ORDER BY T1.ItemCode)AS ROWID    
    FROM TECUL_XMCus T1
    INNER JOIN Tecul_SysUsers T2 ON T1.ItemCode=T2.ItemName AND T2.IsDelete=0
    WHERE T1.IsDelete=0 AND T1.CAOZUO IS NULL
    --先将操作用户字段为NULL的赋值
    UPDATE T2
    SET T2.CAOZUO='<CaoZuo><data><item><id>64b2e004-1038-415b-8522-7c1a8c974572</id><text>020001</text></item></data></CaoZuo>'
    FROM TECUL_XMCus T2
    INNER JOIN Tecul_SysUsers T3 ON T2.ItemCode=T3.ItemName AND T3.IsDelete=0
    WHERE T2.IsDelete=0 AND T2.CAOZUO IS NULL
    --获取最大行数
    DECLARE @Maxrow INT=(SELECT COUNT(*) FROM #TEMPS)
    --开始循环
    WHILE(@Maxrow>0)
    BEGIN
    BEGIN TRY
    BEGIN TRAN
        IF EXISTS(SELECT 1 FROM #TEMPS WHERE Dspid=@BatchID AND ROWID=@Maxrow)
        BEGIN
        DECLARE @ItemCode VARCHAR(20)
        SELECT @ItemCode=ItemCode FROM #TEMPS WHERE Dspid=@BatchID AND ROWID=@Maxrow
        IF EXISTS(SELECT 1 FROM #TEMPS WHERE Dspid=@BatchID AND ROWID=@Maxrow)
            BEGIN
            DECLARE @aid uniqueidentifier,@bid NVARCHAR(100)
            SET @aid=(SELECT Id FROM #TEMPS WHERE ItemCode=@ItemCode AND Dspid=@BatchID AND ROWID=@Maxrow)
            set @bid=(SELECT ItemName FROM #TEMPS WHERE ItemCode=@ItemCode AND Dspid=@BatchID AND ROWID=@Maxrow)
            --更新id元素文本
            UPDATE T2 
            SET CAOZUO.modify('replace value of (/CaoZuo/data/item/id/text())[1] with sql:variable("@aid")')
            FROM #TEMPS T1
            JOIN TECUL_XMCus T2 ON T1.ItemCode=T2.ItemCode AND T2.IsDelete=0
            WHERE T2.ItemCode=@ItemCode AND Dspid=@BatchID AND ROWID=@Maxrow
            --更新text元素文本    
            UPDATE T2 
            SET CAOZUO.modify('replace value of (/CaoZuo/data/item/text/text())[1] with sql:variable("@bid")')
            FROM #TEMPS T1
            JOIN TECUL_XMCus T2 ON T1.ItemCode=T2.ItemCode AND T2.IsDelete=0
            WHERE T2.ItemCode=@ItemCode AND Dspid=@BatchID AND ROWID=@Maxrow
        END
        END
    COMMIT TRAN
    END TRY
    BEGIN CATCH
    DECLARE @ERRORMES NVARCHAR(300)
    SET @ERRORMES=ERROR_MESSAGE()
    ROLLBACK TRAN
    END CATCH
    SET @Maxrow=@Maxrow-1
    END

-- SELECT * FROM  #TEMPS
-- DROP TABLE #TEMPS
END

 

免责声明:文章转载自《批量处理sql 数据存入xml类型列》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PHP实现定时任务的几种方法2017 jq 总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

CAD转DXF怎么转换?教你三种转换方法

2.进入到CAD版本转换的界面中后,在选择“点击选择文件”,在跳转出的“打开”界面中打开需要转换的CAD图纸。...

极验验证码破解之selenium

大家好。我是星星在线,我又来了。今天,我给大家带来极性验证码的硒裂解方法。你有点兴奋吗?你们等不及了。让我们直奔主题。首先,随机找到一个特征点,检查元素,看它是否位于div元素,然后查看它后面的位置。距离已确定。以下是移动硒的大量模拟操作。我们只需要确认需要哪些接口。...

excel下划线转驼峰公式

最近,为了避免麻烦,我决定生成jquery的json对象结构。数据表。下划线应变成驼峰,如下所示:=LEFT&MID...

GitLab 数据库

要访问GitLab数据库步骤中使用的DockerGitlab,首先输入容器dockerexec-itgitlab/bin/bash ``查找数据库配置文件``bash/var/opt/GitLab/gitlabrails/etc/database yml内容如下,记录数据库配置信息production:adapter:postgresqlencoding:u...

怎样能使winform窗体的大小固定住,不能调整其大小

Form1.TopMost=真/假10.将窗体设置为部分透明窗体1.透明键。它接受颜色值。当表单中的颜色与设置的颜色一致时,系统将这些颜色的区域设置为透明。事件1.激活和停用:窗体的活动和非活动状态,即鼠标的焦点和非焦点状态;2.在关闭过程中();您可以取消以关闭此事件。...

C#使用FFMPEG推流,并且获取流保存在本地,随时取媒体进行播放!

最近,基于C#的拖缆的发展并不理想。最后,经过不懈的努力,我取得了一些成绩。这是一张便条;本文重点介绍如何将ffmpeg用于简单的流式传输。如果没有官方文档WithFilter.WithField,简单的代码行似乎很难。拉动();以上是流和获取流的核心代码,保存在本地=TargetType。Live){thrownewApplicationException...