Sql server 在SQLServer2005中,如何在保留文档顺序的同时将XML节点存储在表中?
我有一个xml文件,其中节点的顺序非常重要,如下所示:Sql server 在SQLServer2005中,如何在保留文档顺序的同时将XML节点存储在表中?,sql-server,tsql,sql-server-2005,sql-server-openxml,Sql Server,Tsql,Sql Server 2005,Sql Server Openxml,我有一个xml文件,其中节点的顺序非常重要,如下所示: <Queue> <User name="Bob"/> <User name="Jane"/> <User name="Douglas"/> <User name="Samantha"/> </Queue> 我使用OPENXML将这些节点存储在一个表变量中。如何确保在插入表变量时保留节点顺序 注意,我使用的是OPENXML而不是xquery,因此这不是重
<Queue>
<User name="Bob"/>
<User name="Jane"/>
<User name="Douglas"/>
<User name="Samantha"/>
</Queue>
我使用OPENXML将这些节点存储在一个表变量中。如何确保在插入表变量时保留节点顺序
注意,我使用的是OPENXML而不是xquery,因此这不是重复的:我目前正在做以下工作,依靠“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