José:
Gracias por responder!.
Pero me parece que esas partes de código no se corresponden: el
Procedure de Oracle es "BOTELLERIA_APR_SELECCIONAR" y el código Java
llama a "BOTELLERIA_APR_INSERTAR".
A mi me interesa la parte de recuperar una fila, o sea la parte de
Java que invoca al Procedure "BOTELLERIA_APR_SELECCIONAR". De todas
maneras veo que lo está haciendo con Cursores y mi función retorna un
ROWTYPE.
De todas maneras apreciaría el código Java qu invoca a
"BOTELLERIA_APR_SELECCIONAR".
Nuevamente, muchas gracias.
On Mar 17, 5:37 pm, Jose Antonio Gomez <
joseg...@gmail.com> wrote:
> Buenas estimado no he echo esto con una funcion pero si con un procedimiento
> almacenado, la sintaxis en sql es la siguiente :
>
> *CREATE OR REPLACE PROCEDURE DBVENTAS.BOTELLERIA_APR_SELECCIONAR (*
> *P_PLANTA IN VARCHAR2,P_ACCION IN VARCHAR2,P_EJECUTADO IN NUMBER, res out
> sys_refcursor)*
> *IS*
> *BEGIN*
> * IF(P_EJECUTADO>0)THEN*
> * open res for SELECT PLANTA, NRO_BOLETA, FECHA,
> COD_PRODUCTO, ACCION, NOM_PRO, DESCRIPCION, CANTIDAD, EJECUTADO FROM
> .BOTELLERIA_PLANTA_APROBADA *
> * WHERE EJECUTADO LIKE P_EJECUTADO AND PLANTA LIKE P_PLANTA
> AND ACCION LIKE P_ACCION ;*
> * *
> *END;*
> */*
> la llamada en java seria asi :
>
> *
> String sql = "{CALL BOTELLERIA_APR_INSERTAR(?,?,?,?,?,?,?,?,?)}";
> CallableStatement stmt = transaccion.prepareCall(sql);
> stmt.setString(1,botelleria_planta_aprobada.getPlanta());
> stmt.setString(2,botelleria_planta_aprobada.getNro_boleta());
> stmt.setDate(3,new Date(botelleria_planta_aprobada.getFecha().getTime()));
> stmt.setString(4,botelleria_planta_aprobada.getCod_producto());
> stmt.setString(5,botelleria_planta_aprobada.getAccion());
> stmt.setString(6,botelleria_planta_aprobada.getNom_pro());
> stmt.setString(7,botelleria_planta_aprobada.getDescripcion());
> stmt.setDouble(8,botelleria_planta_aprobada.getCantidad());
> stmt.setDouble(9,botelleria_planta_aprobada.getEjecutado());
> stmt.execute();
> stmt.close();
> *
> *
> *
> Espero que te sirva chau.
>
> El 17 de marzo de 2011 15:14, Adrián Córdoba <
software.a...@gmail.com>escribió:
>
> > Hola Gente!
> > Tengo el siguiente problema:
> > Hay una función en una DB Oracle que es la siguiente:
>
> > **********************************************************
> > CREATE OR REPLACE FUNCTION user_data(userId IN users.user_id%TYPE)
> > RETURN users%ROWTYPE AS
> > userData users%ROWTYPE;
> > BEGIN
>
> > SELECT * INTO userData
> > FROM users
> > WHERE user_id = userId;
>
> > RETURN userData;
>
> > END user_data;
> > *************************************************************
>
> > Esta función devuelve siempre una única fila de la tabla users.
> > Yo intenté recuperar esa única fila, de la siguiente manera:
>
> > *************************************************************
> > CallableStatement statement = connection
> > .prepareCall("{ call ? := get_data(?) }");
>
> > statement.registerOutParameter(1, *OracleTypes.OTHER*);
> > statement.setInt(2, 103);
> > statement.execute();
> > *ResultSet rs = (ResultSet) statement.getObject(1);*
> > * String value = rs.getString(2);*
> > * System.out.println(value);*