Java - Java CLOB y PL Oracle

 
Vista:

Java CLOB y PL Oracle

Publicado por Rubén (2 intervenciones) el 03/10/2019 22:08:27
Buenas tardes gente.

Necesito ayuda con un código Java.

Estoy ejecutando un Stored Procedure Oracle (version: 11g R2) desde Eclipse que retorna un tipo de dato CLOB. La idea es armar un ResultSet con los registros devueltos por el SP, pero al arecer hay un problema con los CLOB.

El error devuelto es el siguiente:
Exception in thread "main" java.lang.ClassCastException: oracle.sql.CLOB cannot be cast to java.sql.ResultSet

Y este es mi código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import oracle.jdbc.OracleTypes;
import java.sql.Clob;
 
public class ConexionJDBC
{
 
	public static void conectaBase()
	{
		System.out.println("Conexion Ora");
 
  		String url="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
 		String user="myUsuario";
 		String password="myClave";
 
 
 		try
 		{
				Class.forName("oracle.jdbc.driver.OracleDriver");
				Connection connection=DriverManager.getConnection(url,user,password);
 
				CallableStatement callableStatement=connection.prepareCall("{call REPORTE (?)}");
 
				callableStatement.registerOutParameter(1, OracleTypes.CLOB);
				callableStatement.execute();
 
				ResultSet rs = (ResultSet)callableStatement.getClob(1);
 
 
				while (rs.next())
				{
					System.out.println(rs.getClob(1));
				}
				rs.close();
 
				callableStatement.close();
				connection.close();
		}
 		catch (ClassNotFoundException e)
 		{
				e.printStackTrace();
		}
 
 		catch (SQLException e)
 		{
 
				e.printStackTrace();
		}
	}
 
}


pl sql

1
2
3
4
5
6
7
8
create or replace PROCEDURE REPORTE (REGISTRO OUT CLOB)
AS
 
BEGIN
 
REGISTRO:='DATO';
 
END;


El error lo veo en la siguiente linea:

ResultSet rs = (ResultSet)callableStatement.getClob(1);



Estuve googleando pero no encontré como crear un recordset con este tipo de datos obteniendolos directamente de un SP. En algunos casos vi que ejecutan la query directamente desde JAVA (sin usar SP. usando executeQuery()), pero en mi caso necesito que sea un Stored Procedure.

Alguna idea de qué podría estar fallando?

Muchas gracias!

Saludos,
Rubén
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Java CLOB y PL Oracle

Publicado por Rubén (2 intervenciones) el 18/10/2019 16:40:09
Hola Tom! muchas gracias por tu respuesta. Voy a investigar un poco más sobre el manejo de estos tipos de datos

Saludos,
Rubén
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar