problemas al pasar un archivo XML a las tablas

12/05/2004 - 03:29 por Mr yo | Informe spam
hola tengo el siguiente problema necesito llenar unas tablas a partir de un
archivo XML la cuestión es que al seleccionar el path (/oc/detalle) en el
archivo suma 2 columnas cuando pido el /oc/cabecera por ejemplo el archivo
que quiero agregar es el siguiente

<oc>
<cabecera>
<version>1</version>
<numero_oc>4500200000</numero_oc>
</cabecera>
<detalle>
<codigo_linea>00010</codigo_linea>

<codigo_item_comprador>000000000000030903</codigo_item_comprador>
</detalle>
</oc>

para pasar este archivo me sirvo de un store procedure que es el siguiente

CREATE PROCEDURE sp_Insert_OC_DET
@strXML ntext
AS
DECLARE @iDoc int
EXECUTE sp_xml_preparedocument @iDoc OUTPUT, @strXML
INSERT INTO DET_ORD_COMPRA (
version,
numero_oc,
codigo_linea,
codigo_item_comprador,
(SELECT * FROM OpenXML(@iDoc, '/oc/detalle',3)
WITH
(
version char(2) '../cabecera' < se
supone que con esto basta pero al parecer no
,numero_oc char(10) '../cabecera'
,codigo_linea char (10)
,codigo_item_comprador char (10)
))


EXECUTE sp_xml_removedocument @iDoc
GO

esto da como resultado que el campo versión queda lleno con el "1" y en el
campo numero_oc queda "1 4500200000" ósea suma los dos campos, la verdad es
que ya no se que puede ser, ¿alguien ha visto este tipo de problema? ¿podra
ser que hay problemas al extraer datos que estan al mismo nivel en el
registro?

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
12/05/2004 - 11:26 | Informe spam
Prueba indicando explícitamente el elemento que quieres recoger. Es
decir, tu procedimiento almacenado debería quedar de la siguiente manera:

CREATE PROCEDURE sp_Insert_OC_DET
@strXML ntext
AS
DECLARE @iDoc int
EXECUTE sp_xml_preparedocument @iDoc OUTPUT, @strXML
INSERT INTO DET_ORD_COMPRA (
version,
numero_oc,
codigo_linea,
codigo_item_comprador,
(SELECT * FROM OpenXML(@iDoc, '/oc/detalle',3)
WITH
(
version char(2) '../cabecera/version'
,numero_oc char(10) '../cabecera/numero_oc'
,codigo_linea char (10) 'codigo_linea'
,codigo_item_comprador char (10) 'codigo_item_comprador'
))




Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Mr yo" escribió en el mensaje
news:
hola tengo el siguiente problema necesito llenar unas tablas a partir de


un
archivo XML la cuestión es que al seleccionar el path (/oc/detalle) en el
archivo suma 2 columnas cuando pido el /oc/cabecera por ejemplo el archivo
que quiero agregar es el siguiente

<oc>
<cabecera>
<version>1</version>
<numero_oc>4500200000</numero_oc>
</cabecera>
<detalle>
<codigo_linea>00010</codigo_linea>

<codigo_item_comprador>000000000000030903</codigo_item_comprador>
</detalle>
</oc>

para pasar este archivo me sirvo de un store procedure que es el siguiente

CREATE PROCEDURE sp_Insert_OC_DET
@strXML ntext
AS
DECLARE @iDoc int
EXECUTE sp_xml_preparedocument @iDoc OUTPUT, @strXML
INSERT INTO DET_ORD_COMPRA (
version,
numero_oc,
codigo_linea,
codigo_item_comprador,
(SELECT * FROM OpenXML(@iDoc, '/oc/detalle',3)
WITH
(
version char(2) '../cabecera' < se
supone que con esto basta pero al parecer no
,numero_oc char(10) '../cabecera'
,codigo_linea char (10)
,codigo_item_comprador char (10)
))


EXECUTE sp_xml_removedocument @iDoc
GO

esto da como resultado que el campo versión queda lleno con el "1" y en el
campo numero_oc queda "1 4500200000" ósea suma los dos campos, la verdad


es
que ya no se que puede ser, ¿alguien ha visto este tipo de problema?


¿podra
ser que hay problemas al extraer datos que estan al mismo nivel en el
registro?


Respuesta Responder a este mensaje
#2 Mr yo
12/05/2004 - 14:34 | Informe spam
excelente, como siempre le dan en el clavo en este foro gracias eso era,
uffff estuve 2 horas dándome de cabezazos y no di con la solución
Respuesta Responder a este mensaje
#3 Carlos Sacristan
12/05/2004 - 14:45 | Informe spam
Me alegro que te haya servido de ayuda



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

Por favor, responder únicamente al foro
Se agradece la inclusión de sentencias DDL


"Mr yo" escribió en el mensaje
news:
excelente, como siempre le dan en el clavo en este foro gracias eso era,
uffff estuve 2 horas dándome de cabezazos y no di con la solución


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida