【发布时间】:2020-02-19 16:45:14
【问题描述】:
上下文: 我在下面有一个 XML 文档,我试图在 SQL Server 2008 中查询该文档。我已按照此处的提示进行操作:https://www.youtube.com/watch?v=vy2Nv26UzAU 并有一个执行没有错误但返回的查询明显不为空的字段中的空值。
问题:有人可以提供一些关于为什么查询返回空结果的指针/故障排除提示吗?这是层次结构路径或数据类型的问题吗?
这是 XML 文档:
<Order_Details>
<Selection_ID>2100</Selection_ID>
<Order_Details>
<Able_To_Use>Y</Able_To_Use>
<Purchase_ID>GF-00000001</Purchase_ID>
<QTY>1</QTY>
<Subdetails>
<REGION_QTY>2</REGION_QTY>
<Testing_NO>00.05.04.01.00</Testing_NO>
</Subdetails>
</Order_Details>
<Order_Details>
<Able_To_Use>Y</Able_To_Use>
<Purchase_ID>GF-00000002</Purchase_ID>
<QTY>1</QTY>
<Subdetails>
<REGION_QTY>2</REGION_QTY>
<Testing_NO>00.05.04.01.034</Testing_NO>
</Subdetails>
</Order_Details>
这里是查询:
--Declare a table variable to hold the data in single column of XML data type
DECLARE @xml_data XML
SELECT @xml_data=O
FROM OPENROWSET(BULK N'C:\Users\Desktop\Important Docs & Links\Important Documents\Python Scripts\separate_xml_doc.xml', SINGLE_BLOB) as file_output(O)
DECLARE @xml_doc int
--Procedure below takes 2 parameters: 1) output parameter to store handle to xml document and 2) the xml document itself
EXEC sp_xml_preparedocument @xml_doc OUTPUT, @xml_data
SELECT *
FROM OPENXML(@xml_doc,'/Order_Details/Order_Details/',2)
WITH (
Able_To_Use nvarchar(10),
Purchase_ID nvarchar(20),
QTY int
)
--This procedre removes the saved prepared xml document from memory once finished using
EXEC sp_xml_removedocument @xml_doc
这些是结果:
【问题讨论】:
标签: sql-server xml tsql sql-server-2008 openxml