Hice un aplicativo web en java que ataca una serie de tablas informix. Ahora tengo que hacer una clase que lance un Procedimiento almancenado en Informix (Stored Procedure) y capture un valor int que éste devuelve. El procedimiento almacenado es el que pongo:
 
CREATE PROCEDURE getIdLog()
  RETURNING INT;
  DEFINE p_valor;
 
  FOREACH cur1 FOR
  		SELECT valcons INTO p_valor FROM hsjconst WHERE codcons=107
 
   		UPDATE hsjconst SET valcons = valcons + 1 WHERE current OF cur1;  
  END FOREACH; 
 
  RETURN p_valor;
END PROCEDURE;  
 
y lo que quiero es que una clase Java lance este procedimiento y recoja el valor (p_valor), tengo hecho lo de abajo pero no funciona (dice que Informix no devuelve ningún valor)
...
try {
       String spl = "{? = call getIdLog()}";
       con = BaseDatos.abrirBD();
       cs = con.prepareCall(spl);
      //el valor de retorno ? es considerado como un parámetro de salida
       cs.registerOutParameter(1, java.sql.Types.INTEGER);	 
       cs.executeUpdate();
     //capturo el parámetro devuelto
      codigo = cs.getInt(1);
} catch (SQLException e) {	   .
..
 
Me dice que el procedimiento devuelve valores, pero no sé cómo capturarlos, he probadp a poner:
String spl = "{? = call getIdLog()}";
y me da error de sintaxis. Necesito ayuda. 
   
 


