Alguien por favor ayúdeme que tengo el siguiente problema al llamar a un procedimiento almacenado en postgresql desde java. Me lanza el siguente error :
CLASE: ControlReligion
METODO: ingresarCliente(Integer,String) ERROR:org.postgresql.util.PSQLException: ERROR: no existe la función insertareligion(integer, character varying)
Hint: Ninguna función coincide en el nombre y tipos de argumentos. Puede ser necesario agregar conversión explícita de tipos.
Position: 15
CODIGO EN POSTGRESQL
CREATE OR REPLACE FUNCTION insertareligion(
fnum_rel integer,
fnom_rel character varying)
RETURNS boolean AS
$BODY$
BEGIN
INSERT INTO "religion" ("num_rel","nom_rel") VALUES (fnum_rel,fnom_rel);
RETURN true;
EXCEPTION
WHEN integrity_constraint_violation THEN
RETURN false;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
CODIGO EN JAVA
public class ControlReligion
{
private CallableStatement sentencia = null;
public void ingresarCliente(Integer numRel, String nomRel) {
try {
this.sentencia = Base_Datos.conexion.prepareCall("{ ? = call insertareligion(?::integer,?)}");
this.sentencia.registerOutParameter(1, Types.BOOLEAN);
this.sentencia.setInt(2, 200501);
this.sentencia.setString(3, "CATOLICO");
boolean noProblema = sentencia.execute();
System.out.println(noProblema);
sentencia.close();
} catch (SQLException e) {
System.out.println("CLASE: ControlReligion \nMETODO: ingresarCliente(Integer,String) ERROR:" + e);
}
}
}