[英]Query to XML Node is giving me NULL Value
試圖實現報表服務器中每個報表使用的存儲過程。
INSERT INTO #ReportRawXML
SELECT
ItemID, RPT.[Name] AS ReportName,
CONVERT(XML, CONVERT(VARBINARY(MAX), RPT.Content)) AS XMLdata
FROM
ReportServer.dbo.[Catalog] AS RPT
WHERE
RPT.[Name] LIKE '%catalog%'
XML 樣品:
<Report>
<DataSets>
<DataSet Name="DSET_ReportRepository">
<Query>
<DataSourceName>CCA_PROD</DataSourceName>
</Query>
</DataSets>
</Report>
我有一個表,其中包含我想查詢的XML
列,但我得到了 NULL 回來; 我嘗試了所有可能的方法,請高人指點。
SELECT
b.ItemID, b.ReportName,
n.c.value('@DataSourceName', 'VARCHAR(MAX)') AS id,
n.c.value('/DataSourceName[1]', 'VARCHAR(500)') AS DataSourceName,
n.c.value('/CommandType[1]', 'VARCHAR(100)') AS CommandType,
n.c.value('/CommandText[1]', 'VARCHAR(100)') AS CommandText
FROM
#ReportRawXML b
OUTER APPLY
b.XMLdata.nodes('/Report/DataSets/DataSet/Query') AS n(c)
問題:在上面的第 3 列中得到 NULL
您下一個問題的一些提示:
CommandType
或CommandText
</DataSet>
)。但現在你的問題:
DECLARE @mockupTable TABLE(ID INT IDENTITY, XMLdata XML);
INSERT INTO @mockupTable VALUES
(N'<Report>
<DataSets>
<DataSet Name="DSET_ReportRepository">
<Query>
<DataSourceName>CCA_PROD</DataSourceName>
</Query>
</DataSet>
</DataSets>
</Report>');
--查詢
SELECT b.ID
,ds.value('(Query/DataSourceName/text())[1]', 'varchar(max)') as id
,ds.value('@Name', 'varchar(max)') as id
FROM @mockupTable b
OUTER APPLY b.XMLdata.nodes('/Report/DataSets/DataSet') as n(ds);
從 XML 中閱讀您必須知道,名稱前的@
表示一個屬性。 要讀取DataSet
的Name
屬性,您需要這個,但不是在您自己嘗試的DataSourceName
之前。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.