У меня есть XML
столбец в таблице со следующей структуройSQL Server дает мне ошибку одноплодной
<md xmlns="http://www.intellipayment.com" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<dist>
<ml>
<S>368.72</S>
<src>26249201</src>
<t>26249202</t>
</ml>
<ml>
....
</ml>
</dist>
</md>
Я хотел бы, чтобы выбрать все SRC и выполнять операции по одному.
Так что мой SQL заявление:
while @i <= @xmlCount
begin
select
@CurrentSrc = AssignmentDistribution.value('(/*:md/*:dist/*:ml/*:src/text())[sql:variable("@i")]', 'varchar(50)')
from
table
where
id = 1234
set @i = @i + 1
end
Я получаю эту ошибку:
XQuery [autodeals.AssignmentDistribution.value()]: 'value()' requires a singleton (or empty sequence), found operand of type 'xdt:untypedAtomic *'
Однако, если заменить переменную SQL со статическим номером 1, 2,3,4 .. ... он правильно покажет мне результат.
Может кто-нибудь, пожалуйста, скажите мне, что я сделал не так?
Благодаря
Спасибо за ваш ответ. Я знаю это решение, но меня больше интересует, почему он дает мне ошибку. –
@KennethLam: одна ** большая ** причина в том, что вы полностью игнорируете ** пространство имен XML ** в документе, и вы пытаетесь выбрать так, как будто в игре нет пространства имен XML. –
пространство имен не является проблемой. Я выясняю, как выбрать переменную sql без определения пространства имен. –