我目前有以下SQL 2005代码块.我需要做的是将XML作为批量操作导入,但是对于每个记录,我可能需要进行一些额外的处理(可能插入到单独的表中).目前我只能查询第一项,如何以每个DTO环顾四周的光标样式查询完整数据?
DECLARE @open_xml XML
SET @open_xml = '<DataDTOs>
</pre>
< DataDTO>
< UserId>123456789</UserId>
< ItemID>0</ItemID>
< /DataDTO>
< DataDTO>
< UserId>112456789</UserId>
< ItemID>10</ItemID>
</ DataDTO>
< DataDTO>
< UserId>123456129</UserId>
< ItemID>20</ItemID>
</ DataDTO>
< DataDTO>
< UserId>120056789</UserId>
< ItemID>444</ItemID>
< /DataDTO>
</ DataDTOs>'
DECLARE @userid nvarchar(255)
SELECT @userid =
tab.col.value('UserId[1]','VARCHAR(20)')
FROM @open_xml.nodes('//DataDTO') tab(col)
select @userid
-- Do some stuff
-- Get next UserID
-- Do some stuff
Run Code Online (Sandbox Code Playgroud)
任何有关这方面的帮助都会很棒!
谢谢
本
没什么特别的,只需在@xml的select中声明一个光标:
DECLARE @userid nvarchar(255);
DECLARE crsDTO cursor static forward_only read_only for
SELECT
tab.col.value('UserId[1]','VARCHAR(20)')
FROM @open_xml.nodes('//DataDTO') tab(col)
open crsDTO;
fetch next from crsDTO into @userid;
while 0 = @@fetch_status
begin
-- do you work
fetch next from crsDTO into @userid;
end
close crsDTO;
deallocate crsDTO;
Run Code Online (Sandbox Code Playgroud)
通常的警告适用,也许您可以将插入作为设置操作而不是光标等等.
| 归档时间: |
|
| 查看次数: |
6034 次 |
| 最近记录: |