none
Realizar insert de imagen en BD RRS feed

  • Pregunta

  • Buenas tardes un saludo a todos, requiero insertar en una BD sal un dato de tipo imagen.

    Estoy intentando realizar el siguiente procedimiento almacenado:

    ALTER PROCEDURE [dbo].[Empresa]
        @email varchar(50), @clave varchar(50), @telefono varchar, @razonsocial varchar(50), @logoimagen varbinary(max),  @direccion varchar, @ciudad varchar, @cp varchar, @cuit varchar
    AS
    BEGIN
        INSERT INTO Empresa (email, clave, telefono, razon_social, logo_imagen, direccion,ciudad, cp, cuit)
        VALUES (@email, @clave, @telefono, @razonsocial, CONVERT(VARBINARY(25), @logoimagen, 1), @direccion, @ciudad, @cp, @cuit)
    END

    Pero al tratar guardarlo me arroja:

    No se permite la conversión implícita del tipo de datos varchar a varbinary. Utilice la función CONVERT para ejecutar esta consulta.

    Me pueden ayudar?

    En la tabla, el campo de imagen esta definido como varbinary(MAX).

    Utilizo Sql Server 2008.

    sábado, 20 de agosto de 2016 16:47

Respuestas

  • Hola Roxseni

    Los parámetros se definen con el tipo de datos apropiado según el tipo de dato subyacente.

    ALTER PROCEDURE [dbo].[Empresa]
        @email varchar(50), @clave varchar(50), @telefono varchar, @razonsocial varchar(50), @logoimagen varbinary(max),  @direccion varchar, @ciudad varchar, @cp varchar, @cuit varchar
    AS
    BEGIN
        INSERT INTO Empresa (email, clave, telefono, razon_social, logo_imagen, direccion,ciudad, cp, cuit)
        VALUES (@email, @clave, @telefono, @razonsocial, @logoimagen, @direccion, @ciudad, @cp, @cuit)
    END

    Observe que no es necesario hacer ninguna conversión en la instrucción INSERT. Pero si necesitará pasar el dato adecuado cuando llame al procedimiento almacenado, desde el framework (C#, VB.NET, etc).

    Saludos,


    Miguel Torres



    • Editado Miguel Torres C sábado, 20 de agosto de 2016 17:54
    • Marcado como respuesta Roxseni domingo, 21 de agosto de 2016 0:31
    sábado, 20 de agosto de 2016 17:53
  • Roxseni,

    ¿Puedes mostrar como estás pasando los valores a los parámetros del procedimiento?

    Por otro lado, ¿Por qué conviertes el valor del parámetro @logoimagen a un tipo VarBinary(25)?

    Esperamos tus comentarios.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Editado Willams Morales sábado, 20 de agosto de 2016 17:55
    • Marcado como respuesta Roxseni domingo, 21 de agosto de 2016 0:31
    sábado, 20 de agosto de 2016 17:20

Todas las respuestas

  • Roxseni,

    ¿Puedes mostrar como estás pasando los valores a los parámetros del procedimiento?

    Por otro lado, ¿Por qué conviertes el valor del parámetro @logoimagen a un tipo VarBinary(25)?

    Esperamos tus comentarios.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Editado Willams Morales sábado, 20 de agosto de 2016 17:55
    • Marcado como respuesta Roxseni domingo, 21 de agosto de 2016 0:31
    sábado, 20 de agosto de 2016 17:20
  • Hola Roxseni

    Los parámetros se definen con el tipo de datos apropiado según el tipo de dato subyacente.

    ALTER PROCEDURE [dbo].[Empresa]
        @email varchar(50), @clave varchar(50), @telefono varchar, @razonsocial varchar(50), @logoimagen varbinary(max),  @direccion varchar, @ciudad varchar, @cp varchar, @cuit varchar
    AS
    BEGIN
        INSERT INTO Empresa (email, clave, telefono, razon_social, logo_imagen, direccion,ciudad, cp, cuit)
        VALUES (@email, @clave, @telefono, @razonsocial, @logoimagen, @direccion, @ciudad, @cp, @cuit)
    END

    Observe que no es necesario hacer ninguna conversión en la instrucción INSERT. Pero si necesitará pasar el dato adecuado cuando llame al procedimiento almacenado, desde el framework (C#, VB.NET, etc).

    Saludos,


    Miguel Torres



    • Editado Miguel Torres C sábado, 20 de agosto de 2016 17:54
    • Marcado como respuesta Roxseni domingo, 21 de agosto de 2016 0:31
    sábado, 20 de agosto de 2016 17:53