繁体   English   中英

一次通话中更新多个记录

[英]Updating multiple records in one call

我正在使用MS SQL Server 2008,并且必须更新其中一个表中的一长串名称。 我想传递一个名称列表,并通过添加前缀来对其进行更新。 假设我将X,Y,Z传递给存储过程,并将其更新为Disable_X,Disable_Y,Disable_Z。

我认为表Value参数正是我要寻找的东西,我已经阅读了http://www.sommarskog.se/arrays-in-sql-2008.html#TVP_in_TSQL,但它仅涉及插入多个参数以及我想做的就是更新多个记录(如果存在)。 我才刚刚开始学习这些概念,所以有人可以指出我正确的方向吗?

编辑:我想将要更新的名称列表传递给存储过程。 不必多次调用存储过程,我只想调用一次。

该存储过程需要一个由逗号分隔的名称组成的字符串。 将此字符串转换为xml并使用xml功能来获取xml所有元素的列表。 未经测试:

CREATE PROCEDURE [dbo].[MultiUpdate] 
(   
    @valuelist varchar(MAX) 
) AS 

    DECLARE @xml as xml

    SET @xml = cast(('<X>'+replace(@valuelist,',' ,'</X><X>')+'</X>') as xml)

    UPDATE yourtable SET name='DISABLE_'+name Where name in (SELECT N.value('.', 'varchar(10)') as value FROM @xml.nodes('X') as T(N))

    RETURN

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM