Foros del Web » Programación para mayores de 30 ;) » Java »

Acceso a un procedimiento almacenado en Oracle desde Java

Estas en el tema de Acceso a un procedimiento almacenado en Oracle desde Java en el foro de Java en Foros del Web. Hola: Estoy usando el JDeveloper 10g para acceder a una función almacenada en una base de datos oracle. El problema es que no puedo conseguir ...
  #1 (permalink)  
Antiguo 06/04/2005, 09:39
 
Fecha de Ingreso: diciembre-2003
Mensajes: 34
Antigüedad: 20 años, 5 meses
Puntos: 0
Acceso a un procedimiento almacenado en Oracle desde Java

Hola:

Estoy usando el JDeveloper 10g para acceder a una función almacenada en una base de datos oracle. El problema es que no puedo conseguir el resultado de la función para utilizarlo en java.

Tengo una función muy simple para probar el acceso, que es la siguiente:

Código:
CREATE OR REPLACE FUNCTION F_PRUEBA (provincia IN NVARCHAR2, codigo IN NUMBER)
RETURN NUMBER IS
prueba NUMBER;
BEGIN
   prueba := 0;
   RETURN prueba;
END F_PRUEBA;
/
Llamada a la función desde java:
Código:
     cstmt = con.prepareCall("{call F_PRUEBA(? ?)}");
     cstmt.setString(1, provincia);
     cstmt.setInt(2, codigo);
     cstmt.registerOutParameter(1, Types.INTEGER);
     int n = cstmt.getInt(1);
Error:

Código:
java.sql.SQLException: ORA-06550: línea 1, columna 38:PLS-00103: Se ha encontrado el símbolo "" cuando se esperaba uno de los siguientes:   . ( ) , * @ % & | = - + < / > at in is mod not range rem =>   .. <an exponent (**)> <> or != or ~= >= <= <> and or like as   between from using || indicator
  at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:189)
  at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:242)
  at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:554)
Pdría decirme alguien que es lo que está fallando.

Muchas gracias.
  #2 (permalink)  
Antiguo 09/04/2005, 14:41
Avatar de kripton  
Fecha de Ingreso: diciembre-2002
Ubicación: Zaragoza
Mensajes: 296
Antigüedad: 21 años, 4 meses
Puntos: 0
Hola Mabrev!!!

Yo lo único raro que veo a primera vista es que la sintaxis de la query y que no realizas el execute antes de ir a recoger el parametro.

Prueba con este código:
Código PHP:
     cstmt con.prepareCall("{?=call F_PRUEBA(?,?)}");//Te añado el ? para recoger el resultado y la coma para separar los parametros de la función
     
cstmt.registerOutParameter(1Types.INTEGER);
     
cstmt.setString(2provincia);
     
cstmt.setInt(3codigo);
     
cstmt.executeQuery(); //Te añado la línea que fuerza que se ejecute la función
     
int n cstmt.getInt(1); 
Espero te ayude

Saludos,
kripton
__________________
Hoy por ti, mañana por mi. Compartiendo entre amigos.

Usuario Registrado Linux #327495
  #3 (permalink)  
Antiguo 11/04/2005, 15:02
 
Fecha de Ingreso: diciembre-2003
Mensajes: 34
Antigüedad: 20 años, 5 meses
Puntos: 0
Muchas gracias por la ayuda, mi problema estaba en las comas para separar los parámetros y en el tipo de variables utilizadas en el PL/SQL.
  #4 (permalink)  
Antiguo 20/05/2005, 08:08
 
Fecha de Ingreso: mayo-2005
Mensajes: 1
Antigüedad: 19 años
Puntos: 0
Pregunta Lo Mismo En Php?

QUISIERA HACER LO MISMO QUE HACE NUESTRO AMIGO EN JAVA PERO DESDE DESDE PHP... ALGUIEN ME PUEDE AYUDAR???
TENGO LA INQUIETUD SOBRE LOS TIPOS DE VARIABLES EN EL PROBLEMA DE JAVA PORQUE A SIMPLE VISTA LOS TIPOS ESTABAN BIEN Y EL PROBLEMA ERA SIMPLEMENTE LA COMA.

GRACIAS

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 08:39.