У меня есть поле XML, которое, как я знаю, будет содержать хотя бы один "ChildNode", но, возможно, больше. Я пытаюсь сделать цикл в T-SQL, который будет получать XML каждого ChildNode как VarChar (1000) и делать некоторую логику с ним. Когда я попробую следующее ...
...
SET @intIterator=1
SET @strValue = (SELECT XMLField.value('(/RootNode/ParentNode/ChildNode)[' + CAST(@intIterator AS VARCHAR(2)) + ']', VARCHAR(1000)) WHERE PrimaryKeyField=@intID)
WHILE LEN(@strValue) > 0
BEGIN
--LOGIC with @strValue not shown.
@intIterator = @intIterator + 1
@strValue = (SELECT XMLField.value('(/RootNode/ParentNode/ChildNode)[' + CAST(@intIterator AS VARCHAR(2)) + ']', VARCHAR(1000)) WHERE PrimaryKeyField=@intID)
END
Я получаю следующую ошибку:
Аргумент 1 метода типа данных xml «value» должен быть строковым литералом.
Я знаю, что это взрывается, когда я пытаюсь использовать @intIterator в методе value, так как ему требуется строковый литерал вместо переменной, но тогда как я могу перебирать дочерние узлы один за другим в T-SQL?