Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/07/2008, 17:16
OscarH
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 15 años, 10 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.