[英]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.