2010-09-13 6 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) 

Любые идеи?

Спасибо,

M

ответ

1

Если удалить позиционное ссылку из вашего .nodes метода(), вы должны получить набор, содержащий все значения TradeId.

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

тогда Вы должны быть в состоянии перебирать, что результирующем, хотя я хотел бы добавить стандартную оговорку о «итерации в реляционной модели, как правило, плохая идея».

Помогло ли это? Если нет, есть ли еще история?

Смежные вопросы