myślałem, że spojrzeć na podejście do tego, że nie wymaga WHILE
pętli. Głównym problemem jest powrót położenia elementu wraz z węzłem, ale znalazłem obejście w ostatniej odpowiedzi w tym poście: http://social.msdn.microsoft.com/Forums/nl/sqlxml/thread/46a7a90d-ebd6-47a9-ac56-c20b72925fb3
Więc Alternatywnym rozwiązaniem byłoby:
insert into mytable ([Word])
select word from (
Select
words.value('@entry','nvarchar(max)') as word,
words.value('1+count(for $a in . return $a/../*[. << $a])', 'int') as Pos
from
OtherTable ot
cross apply ot.XMLColumn.nodes('words/word') x(words)
) sub where Pos <= @j
zasadzie wewnętrzne zyski zapytania każde słowo i jego położenie, może być filtrowane przez zapytanie zewnętrzne.
Dla porównania moja definicja tabeli OtherWords
było:
create table OtherTable (XMLColumn xml)
insert OtherTable (XMLColumn)
select '<words><word entry="Wibble"/><word entry="Hello"/><word entry="World"/></words>'
Nie używaj cytatów na temat nazwy zmiennej: SQL: zmienna ("@ variableName") -> sql: variable (@VariableName) – HuRN