我有以下格式的XML:SQL Server:查詢XML列時,是否可以返回XML列?
<filters>
<filter name="filterByOperatingSystem">
<parameters operatingSystem="Windows" />
</filter>
<filter name="filterBySoftware">
<parameter software="Office" />
</filter>
</filters>
存儲在@XML
。
我想要做的是循環雖然每個過濾器,以便我可以做一些處理。
我的想法是,我可以在光標的參數元素一起抓住每一個過濾器的名字,但我可以得到到目前爲止最接近的是:
DECLARE crsDTO cursor static forward_only read_only for
SELECT
tab.col.value('@name','NVARCHAR(64)')
FROM
@XML.nodes('//filter') tab(col)
我嘗試下面的查詢來看看我是否能獲取參數XML列:
DECLARE crsDTO cursor static forward_only read_only for
SELECT
tab.col.value('@name','NVARCHAR(64)'),
tab.col.value('parameter[1]' 'XML')
FROM
@XML.nodes('//filter') tab(col)
但我得到的錯誤:
The datatype XML used in the value type is invalid
的Bec ause我的過濾器可以有不同的屬性,我不想試圖直接用第一個查詢來獲取屬性(我的想法是做光標,然後根據過濾器名稱,我可以從節點獲取特定參數),但無法獲得XML節點,我不知道如何去做這件事。
任何關於如何解決這個問題的建議?
你預計從中獲取@procedure? – Mithrandir
對不起,我的壞。當試圖將代碼縮小爲樣本大小時,我粘貼了錯誤的屬性名稱。搞掂。 – Kyle