Código
Pero al intentar ejecutarlo me aparecía el siguiente error:
DECLARE @doc xml SELECT @doc = (CAST x AS xml) FROM OPENROWSET(BULK 'ruta', SINGLE_BLOB) AS T(x)
Código:
No se permite analizar XML con DTD de un subconjunto interno. Utilice CONVERT con la opción de estilo 2 para habilitar la compatibilidad limitada con DTD de subconjuntos internos.
Investigué un poco el uso de CONVERT y cambié la sentencia anterior por:
Código
Parece que se ejecuta correctamente mostrando el siguiente mensaje:
SELECT @doc = CONVERT(xml, x, 2) FROM OPENROWSET(BULK 'ruta', SINGLE_BLOB) AS T(x)
Código:
Se ha quitado del DTD XML uno o más fragmentos XML. Se han omitido los subconjuntos externos existentes.
Pero a la hora de intentar trabajar con la variable @doc me sale el siguiente error:
Código:
Debe declarar la variable escalar "@doc".
Ya de paso aprovecho para preguntar si conocéis de alguna guía sobre SQL Server ya que voy buscando información según la voy necesitando pero no llego a consolidar nada de forma teórica. Muchas gracias desde ya.
PD: El documento xml es válido y como es lógico pero por si acaso lo digo: donde he ido poniendo 'ruta' obviamente es la ruta completa de mi fichero xml pero para no copiarla entera...
EDIT RESUELTO: Vale, problema resuelto. Tengo el día tonto y estaba ejecutando únicamente la última sentencia. He seleccionado desde el DECLARE hasta el final y ya funciona correctamente...