Oracle - Capturar Error ORA-00913

   
Vista:

Capturar Error ORA-00913

Publicado por Sara (3 intervenciones) el 24/11/2015 14:08:37
Buenas tardes,

Tengo un proceso automático que recoge datos de una tabla2 y los inserta en una tabla1. El problema es que la tabla2 (de la cual se recoge la información) hay veces que cambia de estructura (y no avisan cuando ocurre esto) y al hacer el insert salta una excepción Oracle ORA-00913: demasiados valores. ¿Habría algún modo de capturar dicha excepción? Lo que quiero es capturar esta excepción para ejecutar un código en ese caso.He probado con un bloque When others pero no entra aquí.

Muchas gracias.
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

Capturar Error ORA-00913

Publicado por FreddyC (2 intervenciones) el 26/11/2015 22:06:58
Tal vez puedes verificar el numero de columnas antes de insertar
1
2
3
4
5
6
7
8
9
10
SELECT col.owner, col.table_name, col.column_name, col.data_type,
col.data_length, col.nullable, col.data_default,
com.comments
FROM all_tab_columns col, all_col_comments com
WHERE col.table_name = com.table_name
  AND col.column_name = com.column_name
  AND col.owner=com.owner
  AND COL.TABLE_NAME ='MI_TABLA'
  AND col.owner = 'MI_OWNER'
ORDER BY col.table_name, col.column_id
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

Capturar Error ORA-00913

Publicado por Sara (3 intervenciones) el 10/12/2015 12:44:05
Muchas gracias FreddyC. Así lo tengo ahora mismo validado con este método, lo que pasa es que me puede ocurrir en varias tablas y me gustaría más implementarlo como captura de la excepción porque me deja el código más limpio. Pero agradezco mucho tu respuesta.
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

Capturar Error ORA-00913

Publicado por Luis (232 intervenciones) el 01/12/2015 19:09:51
Hola sara, puedes usar el Pragma exception_init :

Ejemplo:



DECLARE
deadlock_detected EXCEPTION;
PRAGMA EXCEPTION_INIT(deadlock_detected, -60);
BEGIN
NULL; -- Some operation that causes an ORA-00060 error
EXCEPTION
WHEN deadlock_detected THEN
NULL; -- handle the error
END;

En este caso si ocurre la exception "deadlock_detected " se ejecuta lo que uno programe...(en este caso si ocurre el erro con nro 60) .


Espero te sea de ayuda .

Saludos

Luis Pablo
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

Capturar Error ORA-00913

Publicado por Sara (3 intervenciones) el 10/12/2015 12:34:39
Muchas gracias Luis, voy a probar así.
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