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:
pl sql
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
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


0