存储过程从XML插入多行

时间:2013-11-10 22:04:34

标签: xml sql-server-2005

我正在尝试编写一个存储过程,以便从C#应用程序向表中插入大约100万行。我的应用程序将行写出到XML文件,然后我希望应用程序以XML文件作为参数调用存储过程。我一直在寻找其他类似的问题,但我似乎无法让他们工作,他们似乎都没有解释他们的答案。我的XML只有2列,所以我认为它应该相当简单。我使用的是SQL Server 2005和ASP.NET 2.0。我的XML文件如下所示:

<?xml version="1.0" standalone="yes"?>
<DocumentElement>
  <Test>
    <o_cus>0</o_cus>
    <o_depot>100001</o_depot>
  </Test>

1 个答案:

答案 0 :(得分:0)

如果您的XML在<Test>中包含多个<DocumentElement>元素,那么您可以使用以下内容:

CREATE PROCEDURE dbo.InsertData(@Input XML)
AS
BEGIN
    INSERT INTO dbo.YourTable (O_cus, O_depot)
        SELECT
            XCol.value('(o_cus)[1]', 'int'),
            XCol.value('(o_depot)[1]', 'int')
        FROM 
            @input.nodes('/DocumentElement/Test') AS XTbl(XCol)
END

基本上,您使用XPath从<Test> XML获取@Input XML元素列表,然后您抓取每个片段的o_cuso_depot元素为int(根据需要进行调整),然后将其插入到表中。