循环遍历 XML 以将数据插入临时表 - SQL 2005

发布于 2024-08-03 08:07:31 字数 475 浏览 3 评论 0原文

我正在尝试执行此(独立)SQL:

Declare @test XML
SET @test = '<Products><ProductId>1</ProductId><ProductId>2</ProductId></Products>'
DECLARE @Temp TABLE(        
    ProductId NVARCHAR(10)
   )  
INSERT INTO @Temp(ProductId)
SELECT tab.col.value('./ProductId[1]','NVARCHAR(10)') AS 'ProductId'
FROM @test
CROSS APPLY
xml_data.nodes('//Products') AS tab(col)

似乎我需要创建一个表而不是使用临时表,有没有办法循环遍历 XMl 节点并将它们插入到临时表中(不使用游标)。

I am trying to execute this (standalone) SQL :

Declare @test XML
SET @test = '<Products><ProductId>1</ProductId><ProductId>2</ProductId></Products>'
DECLARE @Temp TABLE(        
    ProductId NVARCHAR(10)
   )  
INSERT INTO @Temp(ProductId)
SELECT tab.col.value('./ProductId[1]','NVARCHAR(10)') AS 'ProductId'
FROM @test
CROSS APPLY
xml_data.nodes('//Products') AS tab(col)

It seems I require to create a Table instead of using Temp Table, Is there a way to loop through the XMl nodes and insert them into a Temp table (without using Cursors).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

嘿嘿嘿 2024-08-10 08:07:31

试试这个:

declare @testXml as xml;
set @testXml = '<products><product productId="1"/><product productId="2"/></products>';
declare @temp table(ProductId nVarChar(10));
insert into @temp(ProductId)
select [xmlData].[Col].value('./@productId', 'nVarChar(10)') as [ProductId]
from @testXml.nodes('/products/product') as [xmlData]([Col]);

Try this:

declare @testXml as xml;
set @testXml = '<products><product productId="1"/><product productId="2"/></products>';
declare @temp table(ProductId nVarChar(10));
insert into @temp(ProductId)
select [xmlData].[Col].value('./@productId', 'nVarChar(10)') as [ProductId]
from @testXml.nodes('/products/product') as [xmlData]([Col]);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文