SQL是否使用存储过程和xml参数插入多行?
我以前使用过表值参数,但不确定如何使用xml 我不知道格式化xml的最佳方法,但我想我会尝试以下方法:SQL是否使用存储过程和xml参数插入多行?,sql,sql-server,sql-server-2005,tsql,stored-procedures,Sql,Sql Server,Sql Server 2005,Tsql,Stored Procedures,我以前使用过表值参数,但不确定如何使用xml 我不知道格式化xml的最佳方法,但我想我会尝试以下方法: <Car> <Name>BMW</Name> <Color>Red</Color> </Car> 然后我将把xml一个或多个car传递给存储过程,它将为我传递的每个car插入一行,并在名称列中输入名称等 有人知道如何编写存储过程吗?我通常会自己尝试,但我没有太多时间测试t\u t您可以使用node
<Car>
<Name>BMW</Name>
<Color>Red</Color>
</Car>
然后我将把xml一个或多个car传递给存储过程,它将为我传递的每个car插入一行,并在名称列中输入名称等
有人知道如何编写存储过程吗?我通常会自己尝试,但我没有太多时间测试t\u t您可以使用nodes函数分解XML:
CREATE PROC ShredXML (@x xml)
AS BEGIN
INSERT INTO TBL_TARGET (Name, Color)
SELECT
x.y.value( 'Name[1]', 'VARCHAR(20)' ) AS Name,
x.y.value( 'Color[1]', 'VARCHAR(20)' ) AS Color
FROM @x.nodes('cars/car') x(y)
END
exec ShredXML @x = N'<cars><car><Name>BMW</Name><Color>Red</Color></car><car><Name>Audi</Name><Color>Green</Color></car></cars>'
您可以使用nodes函数分解XML:
CREATE PROC ShredXML (@x xml)
AS BEGIN
INSERT INTO TBL_TARGET (Name, Color)
SELECT
x.y.value( 'Name[1]', 'VARCHAR(20)' ) AS Name,
x.y.value( 'Color[1]', 'VARCHAR(20)' ) AS Color
FROM @x.nodes('cars/car') x(y)
END
exec ShredXML @x = N'<cars><car><Name>BMW</Name><Color>Red</Color></car><car><Name>Audi</Name><Color>Green</Color></car></cars>'