Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/02/2009, 15:49
Pax-Man
 
Fecha de Ingreso: noviembre-2003
Mensajes: 403
Antigüedad: 20 años, 6 meses
Puntos: 4
Problemas con store procedure que me hace un upload de datos de xml a sqlserver

Bueno amigos estoy tratando de realizar este storeprocedure para hacer un upload de archivos xml a una base de datos

el codigo del storeprocedure es el siguiente:

Código:
ALTER PROCEDURE dbo.subirpagos2
@DATOS xml
AS
DECLARE @docHandle int	--Declara Un Variable entero

EXEC sp_xml_preparedocument @docHandle OUTPUT, @DATOS		
	Insert into pagos(cuenta,referencia,factura,asignacion,doc,fechadoc,fechacontable,fechavencimiento,cpago,demo,importe,doccomp,compensacion,Cl,usuario)
	SELECT cuenta,referencia,factura,asignacion,doc,fechadoc,fechacontable,fechavencimiento,cpago,demo,importe,doccomp,compensacion,Cl,usuario FROM OPENXML(@docHandle,'pagos/pago',1)
	With (cuenta varchar(10),
					referencia varchar(6),
					factura varchar(10),
					asignacion varchar(6),
					doc varchar(10),
					fechadoc datetime,
					fechacontable datetime,
					fechavencimiento datetime,
					cpago varchar(4),
					demo int,
					importe numeric(10, 2),
					doccomp numeric(12, 0),
					compensacion varchar(8),
					Cl nchar(2),
					usuario varchar(10))
EXEC sp_xml_removedocument @docHandle
y este sp es llamado de la siguiente forma
Código:
        Dim conn As New SqlClient.SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)
        Dim cmd As New SqlClient.SqlCommand
        Dim n As Integer = 0
        cmd.CommandText = "subirpagos2"
        cmd.Connection = conn
        cmd.CommandType = CommandType.StoredProcedure
        Dim strFileName As String = ""
        Dim FileMapPath As String = ""
        Dim archivo As String = "pagos.xml"
        FileMapPath = Server.MapPath("xml")
        strFileName = FileMapPath & "\" & archivo
        cmd.Parameters.Add("@datos", SqlDbType.Xml).Value = My.Computer.FileSystem.ReadAllText(strFileName)

        cmd.Connection.Open()
        n = cmd.ExecuteNonQuery()
        conn.Close()

        MsgBox("cantidad de registro Procesado " & (n / 2).ToString, MsgBoxStyle.Information, "Listo")
y mi base de datos