Leer Parametros OUT de PL/SQL desde Java

Sea la funcion en oracle:

FUNCTION FN_CONTAR_X_ESTADO
(
     idEstado NUMBER
     , idUsuario NUMBER
)
RETURN NUMBER 
IS 
     totalByEstado NUMBER;
BEGIN
     SELECT 
     COUNT(documento.id) INTO totalByEstado 
     FROM 
     TBL_DOCUMENTO documento 
     ...;
     RETURN totalByEstado;
END FN_CONTAR_X_ESTADO;

Y dado el procedimiento almacenado:

PROCEDURE SP_CONTAR_X_ESTADO
(
     idUsuario NUMBER
     , tot1001 OUT NUMBER
     , tot1002 OUT NUMBER
     , tot1003 OUT NUMBER
     , tot1004 OUT NUMBER
     , tot1005 OUT NUMBER
     , tot1006 OUT NUMBER
     , tot1007 OUT NUMBER
)
IS
BEGIN
     tot1001 := FN_CONTAR_X_ESTADO(1001, idUsuario);
     tot1002 := FN_CONTAR_X_ESTADO(1002, idUsuario);
     tot1003 := FN_CONTAR_X_ESTADO(1003, idUsuario);
     tot1004 := FN_CONTAR_X_ESTADO(1004, idUsuario);
     tot1005 := FN_CONTAR_X_ESTADO(1005, idUsuario);
     tot1006 := FN_CONTAR_X_ESTADO(1006, idUsuario);
     tot1007 := FN_CONTAR_X_ESTADO(1007, idUsuario);
END SP_CONTAR_X_ESTADO;

La llamada al procedimiento almacenado desde Java es:

try {
      String sql = "begin APP_PAQUETE.SP_CONTAR_X_ESTADO(?, ?, ?, ?, ?, ?, ?, ?); end;";
      Connection con = getSession().connection();
      CallableStatement cs = con.prepareCall(sql);

      cs.setLong(1, idUsuario);
      cs.registerOutParameter(2, OracleTypes.NUMBER);
      cs.registerOutParameter(3, OracleTypes.NUMBER);
      cs.registerOutParameter(4, OracleTypes.NUMBER);
      cs.registerOutParameter(5, OracleTypes.NUMBER);
      cs.registerOutParameter(6, OracleTypes.NUMBER);
      cs.registerOutParameter(7, OracleTypes.NUMBER);
      cs.registerOutParameter(8, OracleTypes.NUMBER);

     cs.execute();

     Long[] cont = new Long[7];
 
     cont[0] = cs.getLong(2);
     cont[1] = cs.getLong(3);
     cont[2] = cs.getLong(4);
     cont[3] = cs.getLong(5);
     cont[4] = cs.getLong(6);
     cont[5] = cs.getLong(7);
     cont[6] = cs.getLong(8);
 
     return cont;
} catch (Exception e) {
    e.printStackTrace();
    throw e;
}

Etiquetas:

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: