Tengo un campo XML que sé que tendrá al menos un "ChildNode", pero posiblemente más. Estoy tratando de hacer un ciclo en T-SQL que obtenga el XML de cada ChildNode como VarChar (1000) y hacer algo de lógica con él. Cuando intento el siguiente ...¿Cómo puedo iterar a través de los Nodos de un campo XML en T-SQL?
...
SET @intIterator=1
SET @strValue = (SELECT XMLField.value('(/RootNode/ParentNode/ChildNode)[' + CAST(@intIterator AS VARCHAR(2)) + ']', VARCHAR(1000)) WHERE [email protected])
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 [email protected])
END
me sale el siguiente error: El argumento 1 del "valor" de datos xml método de tipo debe ser una cadena literal.
Sé que está explotando cuando trato de usar @intIterator en el método de valor, ya que quiere una cadena literal en lugar de una variable, pero ¿cómo puedo iterar a través de los nodos secundarios uno por uno en T-SQL ?
Muy bien. Estás en una base de datos relacional. Piensa en lógica basada en conjuntos, no en bucles y en lógica de procedimientos. –
Lo siento @marc_s, ¿puedes editar tu publicación? Hay una coma adicional en ''Varchar (50)'),'. No puedo editar porque es solo 1 símbolo. – new2ios
@ new2ios: hecho - gracias por señalarlo –