Parsera XML desde SQL server

Bueno, parece que el chuletero lo tengo un poco abandonado pero es porque ando un pelín saturado de curro. Hoy toca pelearse un poco con SQL y la forma de parsear los XML.

En ocasiones podemos necesitar pasar una lista de valores a un procedimiento para insertarlos en base de datos. Si el número de esos valores puede ser dinámico la mejor forma de pasarlos es mediante un XML. Supongamos que tenemos por ejemplo el siguiente XML:

declare @xml xml;
set @xml = '
	<productos>
		<codigo>1</codigo>
		<codigo>2</codigo>
		<codigo>3</codigo>
	</productos>
';

Sin queremos hacer una consulta sobre este XML sería tan sencillo como:

SELECT  ParamValues.ID.value('.','int') as id 
FROM @xml.nodes('/productos/codigo') as ParamValues(ID) 

Pero qué pasa si queremos complicarlo un poco y no es una lista de valores sino un XML más complejo, como por ejemplo:

declare @xml xml
set @xml = '
	<home>		
		<posicion>
			<imagen>aa</imagen>
			<hover>bbb</hover>
			<url>cccc</url>
		</posicion>
		<posicion>
			<imagen>ddd</imagen>
			<hover>eee</hover>
			<url>ffff</url>
		</posicion>
	</home>
';

Pues la forma de hacerlo sería así:

SELECT
   pos.value('imagen[1]', 'Varchar(250)') as 'imagen',
   pos.value('hover[1]', 'Varchar(250)') as 'hover',
   pos.value('url[1]', 'varchar(250)') as 'url'
FROM
   @xml.nodes('/home/posicion') as posicion(pos)
Dejar un comentario?

0 Comentarios.

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.