本文是小编为大家收集整理的关于SQL使用存储过程和XML参数插入多行?的处理/解决方法,可以参考本文帮助大家快速定位并解决问题,中文翻译不准确的可切换到English标签页查看源文。
问题描述
我之前曾使用过一个值的参数,但是我不确定如何使用XML.
我不知道格式化XML的最佳方法,但我想我会尝试的:
<Car> <Name>BMW</Name> <Color>Red</Color> </Car>
然后,我将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>'
其他推荐答案
alter PROC ShredXML (@x xml) AS BEGIN If not exists (Select * from TBL_TARGET ) 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 END exec ShredXML @x = N'<cars><car><Name>BMW</Name><Color>Red</Color></car><car><Name>Audi</Name><Color>Green</Color></car></cars>'
问题描述
I've used a table valued parameter before, but I'm not sure how to use xml.
I do not know the best way to format my xml but I think I would try this:
<Car> <Name>BMW</Name> <Color>Red</Color> </Car>
Then I would pass the xml (one or more car) to the stored procedure and it would insert one row for each car I pass (with the name going in a name column etc..)
Does anyone know how to write the stored procedure? (I'd usually try it myself but I don't have much time for testing T_T)
推荐答案
You can shred the XML using the nodes function:
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>'
其他推荐答案
alter PROC ShredXML (@x xml) AS BEGIN If not exists (Select * from TBL_TARGET ) 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 END exec ShredXML @x = N'<cars><car><Name>BMW</Name><Color>Red</Color></car><car><Name>Audi</Name><Color>Green</Color></car></cars>'
相关标签/搜索
visual studio docker 参数
white-space啥意思
jquery radio 是否选中
dhtmlx-gantt 计划 实际时间
http 可以发 https支持 tls1.2吗
SPSS定义时间时间变量
main函数是主线程吗
windows server 2022搭建vpn
jsp读取bean.xml
freertos崩溃
centos7 怎么ping通两台虚拟机
android端web本地存储
sql-server
stored-procedures
sql-server-2012
ASP.NET
.NET3.5
.NET
SQL-Server
stored-procedure
SQL-server-2005
xml