使用单个过程将多个xml数据动态插入到sql server表中

时间:2013-08-14 05:00:10

标签: sql-server xml

我需要帮助,使用单个过程>

将不同格式的xml数据插入SQL Server数据库

前:

<Items>
    <item></item>
    <item></item>
    <item></item>
</Items>

<Products>
    <product></product>
    <product></product>
    <product></product>
</Products>

所以我需要一个过程将数据插入到数据库中,并将xml作为输入。 (我有近20个xml格式),我只传递一个xml作为输入但不是全部。

此致 Jayachandra

1 个答案:

答案 0 :(得分:0)

你可以尝试一下:

create procedure spInsertData
(
    @data xml
)
as
begin
    set nocount on

    if @data.exist('/Items') = 1
    begin
        insert into Items (Name)
        select T.c.value('text()[1]', 'nvarchar(100)')
        from @data.nodes('/Items/Item') T(c)
        where not exists (select 1 from Items where Name = T.c.value('text()[1]', 'nvarchar(100)'))

        return;
    end
    else if @data.exist('/Products') = 1
    begin
        insert into Products (Name)
        select T.c.value('text()[1]', 'nvarchar(100)')
        from @data.nodes('/Products/Product') T(c)
        where not exists (select 1 from Products where Name = T.c.value('text()[1]', 'nvarchar(100)'))

        return;
    end
    -- etc.

end