entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

procedimiento almacenado postgresql

Tengo una duda soy nuevo en POSTGRESQL y tengo una function con parametros de entrada y tengo 1 de salida.
pero al momento de ejecutarlo me sale el siguiente error y no entiendo porque sabiendo que si lo tengo creado dentr de la misma base de datos y dentro del schema maetros.

No existe la funcion mastros.sp_insertaproductosjaja
Ninguna función coincide en el nombre y tipos de argumentos. Puede ser necesario agregar conversión explícita de tipos.
por favor alguien me ayude porque pasa esto?

mi funcion en postgresql este es el codigo fuente:


CREATE OR REPLACE FUNCTION maestros.sp_insertaproductosjaja(
IN _codproducto character varying, 
IN _ref_producto character varying, 
IN _nom_producto character varying, 
IN _preciocomp_product numeric, 
IN _stock integer, 
IN _observ_prod character varying, 
IN _codcategoria integer, 
IN _dniproveedor character varying, 
IN _ivaprod numeric, 
IN _descuentoprod numeric, 
IN _codtipoinv integer, 
IN _codunidadmedida character, 
IN _codigobarras character varying, 
IN _codigoplu character, 
IN _nromanifiesto character varying, 
IN _servicio bit, 
IN _habilitado bit, 
OUT _respuesta character varying)

  RETURNS character varying AS
$BODY$ --con esta linea y estos signos le estamos diciendo el inicio del cuerpo
BEGIN
IF EXISTS(select Ref_Prod from maestros.Productos where Ref_Prod = _Ref_Producto)THEN
    UPDATE maestros.Productos
    set Cod_Prod= _CodProducto,
    Ref_Prod= _Ref_Producto,
    Nom_Prod= _Nom_Producto,
    PrecioCompraStandar= _PrecioComp_Product,
    Stock_Prod= _Stock,
    Obv_Prod= _Observ_Prod,
    Cod_Cat= _CodCategoria,
    Dni_Prov= _DniProveedor,
    IvaProd= _IvaProd,
    DescuentoProd= _DescuentoProd,
    CodTipoInv= _CodTipoInv,
    unidad= _CodUnidadMedida,
    CodBarras =_CodigoBarras,
    CodPLU= _codigoPLU,
    NroManifiesto =_NroManifiesto,
    Servicio =_servicio,
    Habilitado= _Habilitado
    where Cod_Prod= _CodProducto;
    _respuesta := 'Producto Actualizado con Exito!' ;
ELSE 
INSERT INTO maestros.Productos(Cod_Prod,Ref_Prod, Nom_Prod, PrecioCompraStandar, Stock_Prod,Obv_Prod, Cod_Cat, Dni_Prov,IvaProd,DescuentoProd,CodTipoInv,unidad,CodBarras,CodPLU,NroManifiesto,Servicio,Habilitado)
VALUES (_CodProducto,_Ref_Producto,_Nom_Producto,_PrecioComp_Product,_Stock,_Observ_Prod,_CodCategoria,_DniProveedor,_IvaProd,_DescuentoProd,_CodTipoInv,_CodUnidadMedida,_CodigoBarras,_codigoPLU,_NroManifiesto,_servicio,_Habilitado);

_respuesta := 'Producto Registrado correctamente';

END IF;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE

1voto

Leonardo-Tadei comentado

y cómo estás haciendo el llamado?

0voto

vianey comentado

que tal compa.. asi es como hago el llamado registrando el paarametro de salida _respuesta


public String insertaProducto(DtoProductos dto) throws SQLException, IOException, ClassNotFoundException {
        String resultado = null;
        Connection cn = conex.getConnection();
        CallableStatement call = null;
        try {
            call = cn.prepareCall("{call maestros.sp_insertaproductosjaja(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) }");
            call.setString(1, dto.getIdCodigo());
            call.setString(2, dto.getReferenciaProducto());
            call.setString(3, dto.getDescripcion());
            call.setDouble(4, dto.getPrecioCompra());
            call.setInt(5, dto.getStock());
            call.setString(6, dto.getObservacionProducto());
            call.setInt(7, dto.getCodCategoria())/*Nombre de la Categoria*/;
            call.setString(8, dto.getDniProveedor());
            call.setFloat(9, dto.getIvaProd());
            call.setFloat(10, dto.getDescuentoProd());
            call.setString(11, dto.getCodTipoInv());
            call.setString(12, dto.getCodUnidadMedida());
            call.setString(13, dto.getCodigoBarras());
            call.setString(14, dto.getCodigoPLU());
            call.setString(15, dto.getNroManifiestro());
            call.setInt(16, (dto.isServicio()) ? 1 : 0);
            call.setInt(17, (dto.isHabilitado()) ? 1 : 0);
            call.registerOutParameter(18, java.sql.Types.VARCHAR);
            call.executeUpdate();
            resultado = call.getString(18);//retornando el parametro de salida del store procedure
            call.close();
            cn.close();
        } catch (Exception e) {
            System.out.println("Error insertando productos Dao: " + e.getMessage());
            e.printStackTrace();
            throw e;
        } finally {
            if (call != null) {
                call.close();
                call = null;
            }
            if (cn != null) {
                cn.close();
                cn = null;
            }
        }
        return resultado;
    }

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta