none
llamar a un procedimiento almacenado

    Pregunta

  • no se en que me equivoco T.T 

    xlm_doc.CommandType = CommandType.StoredProcedure 'conexion.Open() Dim xml_timbre As New SqlParameter("@timbre", SqlDbType.Xml) Dim parametro1 As New SqlParameter("@id_documento", SqlDbType.Int) parametro1.Size = 100 ' xml_timbre.Size = 1000 parametro1.Value = TxtIDDocu.Text xml_timbre.Value = xml xlm_doc.Parameters.Add(parametro1) xlm_doc.Parameters.Add(xml_timbre) xlm_doc.ExecuteNonQuery()

    y el procedimiento es 
    ALTER procedure [dbo].[prc_ingresaxmldoc]
     @timbre xml
    ,@id_documento int
     as
     update documentos set xml_doc = @timbre where id_documento= @id_documento 
    porfa alguien puede ver el error  quiero guardar un xml en la base de datos si lo en duro no tengo problemas pero cuando trato de hacerlo con procedimiento almacenado no puedo 

    miércoles, 28 de septiembre de 2016 15:25

Respuestas

  • Muchas gracias a todos, ya lo resolví. Tenia que cambiar el  procedimiento almacenado 

    ALTER procedure [dbo].[prc_ingresaxmldoc]
     @timbre varchar(max)
    ,@id_documento int
     as
     update documentos set xml_doc = @timbre where id_documento= @id_documento 

    solo cambie de xml a varchar muchas gracias  Joel C. Naupa Crispín

    miércoles, 28 de septiembre de 2016 17:35

Todas las respuestas

  • Hola login y conexión a diferentes bases de datos,

    No te muestra algún error ? Prueba cambiando la forma en la que envías el parámetro.

    Algo como :

    Public Sub nombreMetodo()
        Try
            Using con As New SqlConnection("MiCadenaConexion")
               con.Open()
    
                Dim cmd As New SqlCommand("prc_ingresaxmldoc", con)
                cmd.CommandType = CommandType.StoredProcedure
    
    
        cmd.Parameters.Add("@timbre", SqlDbType.Xml).Value = xml
        cmd.Parameters.Add("@id_documento", SqlDbType.Int, 100).Value = Convert.ToInt32(TxtIDDocu.Text)
    
                 cmd.ExecuteNonQuery()
    
                 MessageBox.Show("Success")
             End Using
        Catch ex As Exception
           MessageBox.Show(ex.Message)
        End Try
    End Sub


    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    miércoles, 28 de septiembre de 2016 15:47
  • no me sale el mismo error 

    Análisis de XML: línea 1, carácter 43; no se puede cambiar de codificación

    miércoles, 28 de septiembre de 2016 16:00
  • Hola login y conexión a diferentes bases de datos,

    Aunque la estructura es la correcta, el xml que estás enviando tiene algún problema. Haz verificado que el enconding sea el correcto ?

    El xml lo estás generando ? O lo obtienes de un archivo ?

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    miércoles, 28 de septiembre de 2016 16:07
  • el xml lo genero 

    se que se puede guardar ya que al poner 

    Dim sqlupdate As New SqlCommand("update documentos set xml_doc ='" & xml & "' where id_documento='" & TxtIDDocu.Text & "'", conexion)
    sqlupdate.ExecuteNonQuery()

    no tengo problemas alguno pero me pidieron que fuera con un proceso almacenado =P 

    de antemano muchas gracias 

    miércoles, 28 de septiembre de 2016 16:11
  • Hola login y conexión a diferentes bases de datos,

    Prueba agregándole el parámetro sin el tipo :

    cmd.Parameters.AddWithValue("@timbre", xml)

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    miércoles, 28 de septiembre de 2016 16:17
  • TT.TT me sale el mismo error 
    miércoles, 28 de septiembre de 2016 17:09
  • Muchas gracias a todos, ya lo resolví. Tenia que cambiar el  procedimiento almacenado 

    ALTER procedure [dbo].[prc_ingresaxmldoc]
     @timbre varchar(max)
    ,@id_documento int
     as
     update documentos set xml_doc = @timbre where id_documento= @id_documento 

    solo cambie de xml a varchar muchas gracias  Joel C. Naupa Crispín

    miércoles, 28 de septiembre de 2016 17:35