Ejemplo para llamar una función pg/psql

 

Este es un ejemplo de como llamar una funcion pg/sql que retorna un valor, y leer el valor dentro de un jsp. En este caso mi función devuelve un valor de tipo boolean.
Esta es la funcion en postgres
CREATE OR REPLACE FUNCTION agregar(double precision, character varying, integer, character varying, 
character varying, character varying)
  RETURNS boolean AS
$BODY$
declare
 id ALIAS FOR $3;
 establecidas int :=0;
 agregadas int :=0;
 inicio date :=TO_DATE($5,'YYYY/MM/DD');
 termino date :=TO_DATE($6,'YYYY/MM/DD');
 nulo date:= null;
 mensaje boolean := false;
BEGIN
 select into establecidas from proyectos where id=id;
 agregadas :=  count(id) from etapas where id=id;
 IF agregadas < establecidas THEN
insert into etapas (monto, observaciones, id_proy, nombre,
 fch_inicio, fch_termino, prorroga) values ($1,$2,$3,$4,inicio,termino,nulo);
mensaje:=true;
 END IF;
 RETURN mensaje;
END;
$BODY$
  LANGUAGE 'plpgsql'

Aquí mandamos llamar la función y capturamos el valor

CallableStatement proc = conn.prepareCall("{ ?=call agregar( ?,?,?,?,?,? ) }");
proc.setFloat(2,monto);
proc.setString(3,observaciones);
proc.setInt(4,p);
proc.setString(5,nombre);
proc.setString(6,fch_inicio);
proc.setString(7,fch_termino);
proc.registerOutParameter( 1, Types.BOOLEAN );
proc.execute();
if(proc.getBoolean(1))
response.sendRedirect("lista.jsp?clave="+p);
else
out.println("<h3 id='colora'><center>No se pude agregar,</center></h3>");
proc.close();

En algunas maquinas puede generar un error la jsp en el tipo de dato que se registra, esto se soluciona registrando el tipo de dato Types.BOOLEAN por Types.BIT y ya no habrá problema alguno, y para obtener el valor de retorno podemos seguir haciendo uso del metodo getBoolean(1) ya que la documentacion dice esto: Recupera el valor de un parámetro JDBC bit o booleano como un booleano en el lenguaje de programación Java.

Anuncios

2 comments so far

  1. alhzombie on

    no me funca :S


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: