SQL - query dinamico a campo XML

   
Vista:

query dinamico a campo XML

Publicado por Alejandro Munguía (1 intervención) el 18/09/2014 22:48:29
Estimados, humildemente les pido ayuda para lo siguiente:

Utilizo Sql Server 2008 R2.

Tengo una tabla llamada DATOS , es la siguiente:

1
2
3
CODIGO     DETALLE
1          <ROW><FIELDS Nombre="Jose" Apellido="Orroa" Telef="4654564" Email="jorroa@gmail.com" /></ROW>
2          <ROW><FIELDS Nombre="Ana" Apellido="Zutch" Telef="4654564" Email="jazutch@gmail.com" /></ROW>


El campo CODIGO es un uniqueidentifier.
El campo DETALLE es un xml.

Quiero realizar un select donde me lea el campo xml por lo que realizo el siguiente query:

1
2
3
4
5
6
7
SELECT A.CODIGO,
TBL.COL.value('@Nombre', 'Varchar(30)') as NOMBRE,
TBL.COL.value('@Apellido', 'Varchar(30)') as APELLIDO,
TBL.COL.value('@Fono', 'Varchar(10)') as TELEF,
TBL.COL.value('@Email', 'Varchar(100)') as CORREO
FROM DATOS A
CROSS APPLY a.DETALLE.nodes('ROW/FIELDS') TBL(COL)


Y me obtiene el siguiente resultado de forma correcta:

1
2
3
CODIGO  NOMBRE    APELLIDO   TELEF    CORREO
1       Jose      Orroa      4654564  jorroa@gmail.com
2       Ana       Zutch      4654564  jazutch@gmail.com


Mi problema es que si en el campo de xml (DETALLE) existiera 100 o mas campos (en el ejemplo hay 4 campos), ¿como puedo realizar un query dinamico que sin importar el numero de campos que existiese dentro del xml se muestren todos los campos?

Agradezco toda la ayuda que me puedan brindar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder