插入或存储使用具有命名空间的 XML PATH 创建的 XML
Insert or store a XML created with XML PATH that has namespaces
我用 XML PATH 生成了一个 XML,它有 6 个命名空间。有一个架构,因此我无法更改 XML 结构。
WITH XMLNAMESPACES ('NS1' AS ns1,
'NS2' AS ns2,
'NS3' AS ns3,
'NS4' AS ns4,
'NS5' AS ns5,
'NS6' AS ns6)
SELECT(SELECT 'something' AS 'ns3:node2' FOR XML PATH('ns2:Node1'), TYPE)
FOR XML PATH(''),
ROOT('ns1:RootNode');
现在我需要将输出插入 tmp table 或将其存储在变量中。 我遇到的问题是需要一个;在它前面。 所以 Set @myVariable = above Codeblock
和 insert into tmp table values(above codeblock)
都不起作用,我想知道是否有办法存储它。 XML 是有效的,如果我查看它或将其保存到硬盘,它工作正常,但我需要对 XML.
做更多的工作
您需要将整个 SELECT
放在进一步的子查询中。所以插入:
DECLARE @T TABLE (X XML);
WITH XMLNAMESPACES ('NS1' AS ns1,
'NS2' AS ns2,
'NS3' AS ns3,
'NS4' AS ns4,
'NS5' AS ns5,
'NS6' AS ns6)
INSERT @T (X)
SELECT (SELECT (SELECT 'something' AS 'ns3:node2' FOR XML PATH('ns2:Node1'), TYPE)
FOR XML PATH(''),
ROOT('ns1:RootNode'));
SELECT * FROM @T;
或者给变量赋值:
DECLARE @X XML;
WITH XMLNAMESPACES ('NS1' AS ns1,
'NS2' AS ns2,
'NS3' AS ns3,
'NS4' AS ns4,
'NS5' AS ns5,
'NS6' AS ns6)
SELECT @X= (SELECT (SELECT 'something' AS 'ns3:node2' FOR XML PATH('ns2:Node1'), TYPE)
FOR XML PATH(''),
ROOT('ns1:RootNode')
);
SELECT @X;
我用 XML PATH 生成了一个 XML,它有 6 个命名空间。有一个架构,因此我无法更改 XML 结构。
WITH XMLNAMESPACES ('NS1' AS ns1,
'NS2' AS ns2,
'NS3' AS ns3,
'NS4' AS ns4,
'NS5' AS ns5,
'NS6' AS ns6)
SELECT(SELECT 'something' AS 'ns3:node2' FOR XML PATH('ns2:Node1'), TYPE)
FOR XML PATH(''),
ROOT('ns1:RootNode');
现在我需要将输出插入 tmp table 或将其存储在变量中。 我遇到的问题是需要一个;在它前面。 所以 Set @myVariable = above Codeblock
和 insert into tmp table values(above codeblock)
都不起作用,我想知道是否有办法存储它。 XML 是有效的,如果我查看它或将其保存到硬盘,它工作正常,但我需要对 XML.
您需要将整个 SELECT
放在进一步的子查询中。所以插入:
DECLARE @T TABLE (X XML);
WITH XMLNAMESPACES ('NS1' AS ns1,
'NS2' AS ns2,
'NS3' AS ns3,
'NS4' AS ns4,
'NS5' AS ns5,
'NS6' AS ns6)
INSERT @T (X)
SELECT (SELECT (SELECT 'something' AS 'ns3:node2' FOR XML PATH('ns2:Node1'), TYPE)
FOR XML PATH(''),
ROOT('ns1:RootNode'));
SELECT * FROM @T;
或者给变量赋值:
DECLARE @X XML;
WITH XMLNAMESPACES ('NS1' AS ns1,
'NS2' AS ns2,
'NS3' AS ns3,
'NS4' AS ns4,
'NS5' AS ns5,
'NS6' AS ns6)
SELECT @X= (SELECT (SELECT 'something' AS 'ns3:node2' FOR XML PATH('ns2:Node1'), TYPE)
FOR XML PATH(''),
ROOT('ns1:RootNode')
);
SELECT @X;