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

diferencias entre una llamada a un procedure oracle desde java y desde la BD

Estas en el tema de diferencias entre una llamada a un procedure oracle desde java y desde la BD en el foro de Java en Foros del Web. Hola Sucede un comportamiento extraño. Un Stored procedure en oracle10g al ejecutarlo directamente desde la base de datos funciona correctamente. El procedimiento, lo que tiene ...
  #1 (permalink)  
Antiguo 20/06/2011, 09:20
Avatar de edjuradob  
Fecha de Ingreso: junio-2011
Ubicación: España
Mensajes: 24
Antigüedad: 12 años, 10 meses
Puntos: 1
Pregunta diferencias entre una llamada a un procedure oracle desde java y desde la BD

Hola

Sucede un comportamiento extraño.
Un Stored procedure en oracle10g al ejecutarlo directamente desde la base de datos funciona correctamente.

El procedimiento, lo que tiene que hacer es leer un blob, lee linea por linea, separa los caracteres y hace inserciones en dos tablas.

Cuando ejecuto desde la base de datos, se insertan por ejemplo, 6 registros.

Cuando ejecuto desde java, con la siguiente llamada:

conO=openConnectionOrigen();
CallableStatement sentencia = conO.prepareCall("{call MyDatabase.MyProcedure}");
sentencia.execute();

Se salta la primera línea del blob y solo inserta 5 registros (en el ejemplo con los mismos datos que debería insertar 6)

estoy usando el JDK 1.6_25

¿Hay alguna diferencia entre ejecutarlo desde la base de datos y desde java?

Un saludo y muchas gracias.
  #2 (permalink)  
Antiguo 21/06/2011, 15:32
Avatar de alan_69niupi  
Fecha de Ingreso: junio-2011
Mensajes: 200
Antigüedad: 12 años, 11 meses
Puntos: 17
Respuesta: diferencias entre una llamada a un procedure oracle desde java y desde la

bien por lo que entendi. la diferencia es que no solo en java si no en casi todos los lenguajes de programacion. si estar insertando con algun ciclo los lenguajes de programacion inician en indice 0. es decir
linea 0
linea 1
..
..
linea 5
el oracle inicia el indice desde 1
puede que ese sea el problema o un error de logica o sintaxis en el codigo
  #3 (permalink)  
Antiguo 24/06/2011, 02:34
Avatar de edjuradob  
Fecha de Ingreso: junio-2011
Ubicación: España
Mensajes: 24
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: diferencias entre una llamada a un procedure oracle desde java y desde la

Hola

No era cuestión de los índices. Al final he resuelto el problema, aunque no me ha gustado del todo.

El problema era que la conexión la tenía como ReadOnly, para hacer una conexión mas eficiente y como llamaba a un Stored Procedure que se encargaba de hacer las inserciones, en teoría no habría problemas, puesto que el control lo tenía el Stored Procedure y no la conexión hecha desde java.

La cuestión es que por alguna razón que desconozco, Oracle no otorgaba los permisos de escritura en el primer ciclo del cursor, y daba un error de permisos de escritura. Sin embargo, al siguiente ciclo, tomaba los permisos del Stored Procedure en vez de el cliente que lo ha llamado, que en este caso era java. Al parecer hay varios hilos de ejecución en los cuales está la lectura de permisos y la de la ejecución del procedimiento y me parece que no le daba tiempo al hilo de los permisos a otorgarlos antes de que llegara a la primera inserción, pero a la segunda ya los tenía.

Lo he solucionado dejando la transacción sin el setReadOnly, que a fin de cuentas el volumen de datos no sera demasiado grande y se ejecutará por las noches.

Etiquetas: blob, oracle, procedures, stored-procedure
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 19:24.