Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Pasar XML a Tabla

16 views
Skip to first unread message

Diego Mazzitelli

unread,
Oct 6, 2009, 1:43:52 PM10/6/09
to
Hola a todos!
Estoy intentando pasar un xml a una tabla y me tira el siguiente
error:

Msg 225, Level 16, State 12, Procedure ActArticulos, Line 5
The parameters supplied for the function "OpenXML" are not valid.


El codigo mio es el siguiente:

create procedure ActArticulos
@xml varchar(max)
as
BEGIN
select *
into #Articulos
from openxml(@xml,'/ROOT/Articulos')
with ( [idArticulo] [varchar](13) ,
[descripcion] [varchar](30) ,
[suspendido] [numeric](1, 0),
[unidadVenta] [int] ,
[idLinea] [varchar](3) ,
[idRubro] [varchar](3) )

END
GO

Alguien me puede decir donde esta el error? o como hacer para
convertir un xml q me viene en la variable a una tabla

Carlos M. Calvelo

unread,
Oct 6, 2009, 4:23:51 PM10/6/09
to
Hola Diego,

Y por qué no buscas en la ayuda por algo como 'OPENXML'?

Al openxml le tienes que pasar un número de referencia
a un documento xml 'parsed' (en buen castellano??
'parsiculado'?? :) ) y no el documento mismo.

declare @ref int
exec sp_xml_preparedocument @ref OUT, @xml

select *
from openxml(@ref,'/ROOT/Articulos')


with ( [idArticulo] [varchar](13) ,
[descripcion] [varchar](30) ,
[suspendido] [numeric](1, 0),
[unidadVenta] [int] ,
[idLinea] [varchar](3) ,
[idRubro] [varchar](3) )

exec sp_xml_removedocument @ref

Saludos,
Carlos

Alejandro Mesa

unread,
Oct 7, 2009, 11:26:01 AM10/7/09
to
Diego,

Ademas de lo dicho por Carlos, te sugiero que si usas SQL Server 2005 /
2008, entonces preferible que uses el tipo de data xml para pasar el
documento como parametro al sp.

Puedes usar las funciones Nodes() y Value() para desmantelar el documento.

AMB

0 new messages