Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Alguien ha hecho un procedimiento que devuelva un select??? a resultset de java

Estas en el tema de Alguien ha hecho un procedimiento que devuelva un select??? a resultset de java en el foro de Oracle en Foros del Web. hola amigos, tengo una duda la cual la estoy arrastrando ...... quiero saber cual es la manera de contruir un procedimiento en pl/sql que devuelva ...
  #1 (permalink)  
Antiguo 02/07/2008, 16:19
Avatar de jhoncacru  
Fecha de Ingreso: mayo-2004
Ubicación: cochabamba-Bolivia
Mensajes: 107
Antigüedad: 19 años, 11 meses
Puntos: 1
Alguien ha hecho un procedimiento que devuelva un select??? a resultset de java

hola amigos, tengo una duda la cual la estoy arrastrando ......
quiero saber cual es la manera de contruir un procedimiento en pl/sql que devuelva el resultado de una consulta select para que yo lo capture desde Java en un resultser y empiece a recorrer los registros.
Como lo puedo hacer?????


...............
__________________
Gracias de antemano.
  #2 (permalink)  
Antiguo 02/07/2008, 17:16
 
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.
  #3 (permalink)  
Antiguo 03/07/2008, 08:22
Avatar de jhoncacru  
Fecha de Ingreso: mayo-2004
Ubicación: cochabamba-Bolivia
Mensajes: 107
Antigüedad: 19 años, 11 meses
Puntos: 1
Respuesta: Alguien ha hecho un procedimiento que devuelva un select??? a resultset de

Muchas gracias OscarH en seguida lo pruebo.
__________________
Gracias de antemano.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:58.