2010-09-13 89 views
1

所有,使用變量TSQL +的XQuery

我有以下代碼:

--xml is already declared and populated with an xml document 

SELECT 
ent.query('TradeId').value('.','VARCHAR(10)') TradeId 
FROM     
@xml.nodes('//table/trade[1]') Col(ent) 

如何可以具有表達//表/貿易[1]作爲一個變量,所以我可以增加[1]在循環中?例如,我想像下面哪個不工作的東西:

DECLARE @KLM varchar(100) 
SET @KLM= '//table/trade[1]' 
SELECT 
ent.query('TradeId').value('.','VARCHAR(10)') TradeId 
FROM     
@xml.nodes(@KLM) Col(ent) 

任何想法?

感謝,

中號

回答

1

如果您從您的.nodes()方法對於該位置的參考,你應該得到一個包含所有TradeId值的一個結果。

SELECT 
ent.query('TradeID').value('.','VARCHAR(10)') TradeId 
FROM     
@xml.nodes('//table/trade') Col(ent) 

然後,您應該能夠通過這個結果集進行迭代,但我想補充有關標準告誡「在關係模型迭代通常是一個壞主意」。

這有幫助嗎?如果沒有,故事還有更多嗎?