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.