SQL是否使用存储过程和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

我以前使用过表值参数,但不确定如何使用xml

我不知道格式化xml的最佳方法,但我想我会尝试以下方法:

<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>'