02/07/2008, 17:16
|
| | Fecha de Ingreso: junio-2008 Ubicación: D.F.
Mensajes: 62
Antigüedad: 16 años, 5 meses Puntos: 1 | |
Respuesta: Alguien ha hecho un procedimiento que devuelva un select??? a resultset de Que Tal,
Bueno no se si lo que buscas es la parte de Oracle o la de Java, pero de cualquier forma te muestro la forma de hacerlo
en ambas partes.
--===========================================
-- P A R T E D E O R A C L E
--===========================================
CREATE OR REPLACE PACKAGE NOMBRE_PAQUETE IS
TYPE NOMBRE_REFCURSOR IS REF CURSOR; -- DECLARAS EL TIPO DE REF CURSOR
PROCEDURE proc_cursor (pValores OUT NOMBRE_REFCURSOR);
END NOMBRE_PAQUETE;
/
CREATE OR REPLACE PACKAGE BODY NOMBRE_PAQUETE IS
-- REGRESA UN REF CURSOR DEL TIPO DECLARADO
PROCEDURE proc_cursor(pInfo OUT NOMBRE_REFCURSOR) IS
vrParam NOMBRE_REFCURSOR;
BEGIN
-- TU CÓDIGO
-- ABRIR EL REF CURSOR CON EL QUERY QUE CONTENGA TUS PARÁMETROS
OPEN vrParam FOR
SELECT 'REF' AS PRAM2, 'CURSOR' AS PARAM2
FROM DUAL;
pInfo := vrParam;
EXCEPTION
WHEN OTHERS THEN
-- TUS EXECPCIONES
END proc_cursor;
END NOMBRE_PAQUETE;
/
--===========================================
-- P A R T E D E J A V A
--===========================================
package project1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import oracle.jdbc.OracleCallableStatement;
import oracle.jdbc.OracleTypes;
import java.sql.SQLException;
/**
*
* @author OSCAR HERNANDEZ BARRON
*/
public class SPCallOra {
public static void main(String[] args){
Connection conn = null;
OracleCallableStatement stmt = null;
try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
conn = DriverManager.getConnection("jdbc:oracle:thin:@IP: PUERTO:SID", "USUARIO","PASSWORD");
stmt =(OracleCallableStatement)conn.prepareCall( "{ call NOMBRE_PAQUETE.PROC_CURSOR(?) } " );
stmt.registerOutParameter( 1, OracleTypes.CURSOR);
stmt.execute();
String val = stmt.getString(9);
System.out.println("****Mensaje: "+val);
ResultSet rs = (ResultSet) stmt.getObject(1);
while(rs.next()) {
System.out.println(""+rs.getString(1));
System.out.println(""+rs.getString(2));
}
} catch (SQLException se) {
System.out.println(se.toString());
} catch (Exception e) {
System.out.println(e.toString());
} finally {
try {
stmt.close();
conn.close();
} catch (SQLException se) {
System.out.println(se.toString());
}
}
}
}
ESPERO TE SEA DE UTILIDAD
SALUDOS. |