我有一些数据以 XML 格式存储在表中:
<AccountTypes xmlns="">
<Id>1003</Id>
<Id>2</Id>
<Id>3</Id>
<Id>1004</Id>
<Id>1002</Id>
<Id>0</Id>
</AccountTypes>
Run Code Online (Sandbox Code Playgroud)
这是以前仅在 C# 代码中处理的旧数据,因此无法更改。
我现在需要阅读此内容并在存储过程中对其进行处理。到目前为止我已经得到以下代码:
DECLARE @accountTypes XML
SELECT @accountTypes = DT.AccountTypes FROM dbo.DataTable AS DT
WHERE DT.Id = 1016
DECLARE @hdoc int
EXEC sys.sp_xml_preparedocument @hdoc OUTPUT, @accountTypes
SELECT *
FROM OPENXML (@hdoc, '/AccountTypes/Id')
WITH(
Id VARCHAR(10) 'Id'
)
EXEC sys.sp_xml_removedocument @hdoc
Run Code Online (Sandbox Code Playgroud)
然而,其输出只是空行:
Id
NULL
NULL
NULL
NULL
NULL
NULL
Run Code Online (Sandbox Code Playgroud)
而不是我期望的 id 值。
无论是否包含colpattern
('Id') 或者是否在命令flags
上设置参数,我都会得到相同的结果OPENXML
。
我可以对当前形式的数据做些什么来从 XML 中获取实际值吗?