ski*_*kid 1 sql t-sql sql-server stored-procedures sql-server-2005
我之前使用过表值参数,但我不确定如何使用xml.
我不知道格式化我的xml的最佳方法,但我想我会试试这个:
<Car>
<Name>BMW</Name>
<Color>Red</Color>
</Car>
Run Code Online (Sandbox Code Playgroud)
然后我会将xml(一个或多个汽车)传递给存储过程,它会为我传递的每辆汽车插入一行(名称将在名称列中等等).
有谁知道如何编写存储过程?(我通常会亲自尝试,但我没有太多时间来测试T_T)
您可以使用节点功能粉碎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>'
Run Code Online (Sandbox Code Playgroud)