[英]In SQL Server 2005, how can I store XML nodes in a table while preserving document order?
我有一個xml文件,其中節點的順序很重要,就像這樣一個:
<Queue>
<User name="Bob"/>
<User name="Jane"/>
<User name="Douglas"/>
<User name="Samantha"/>
</Queue>
我正在使用OPENXML將這些節點存儲在表變量中。 當我插入表變量時,如何確保保留節點順序?
注意,我使用的是OPENXML而不是xquery,所以這不是重復的: 在SQL Server中的XML文檔中查找節點順序
我目前正在執行以下操作,依靠'mp:id'提供排序。
DECLARE @xmltext NVARCHAR(MAX)
SET @xmltext =
N'
<Queue>
<User name="Bob"/>
<User name="Jane"/>
<User name="Douglas"/>
<User name="Samantha"/>
</Queue>';
DECLARE @xmlObjectHandler INT;
-- Set up XML and the appropriate namespace(s) we'll be using
EXEC sp_xml_preparedocument @xmlObjectHandler OUTPUT, @xmltext;
DECLARE @TUserQueue TABLE (
Ordinal INT IDENTITY(1,1),
UserName NVARCHAR(200)
)
INSERT INTO @TUserQueue
SELECT
UserName
FROM
OPENXML(@xmlObjectHandler, '/Queue/User')
WITH (
NodeId INT '@mp:id',
UserName NVARCHAR(200) '@name'
) AS users
ORDER BY users.NodeId;
SELECT * FROM @TUserQueue
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.