Oracle - Tratamiento de errores dentro de un Procedure

 
Vista:

Tratamiento de errores dentro de un Procedure

Publicado por Cristina Álvarez (1 intervención) el 26/03/2003 12:02:28
Hola, estoy haciendo un procedure y quiero tratar el error de foreign key cuando hago un insert, me se el codigo del error pero no sé como ponerlo:
Ej:

EXCEPTION
WHEN ORA-11111 THEN

Como se pone si no me se la Variable global y solo el código?
CRIS
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

RE:Tratamiento de errores dentro de un Procedure

Publicado por Byron (300 intervenciones) el 26/03/2003 14:55:08
Cuando quieres manejar una excepcion no predeterminada como NO_DATA_FOUND, DUP_VAL_ON_INDEX, VALUE_ERROR, etc, entonces utilizamos OTHERS.

El cual captura cualquier excepcion, ten en cuenta que si tu seccion exception captura otros errores, when others debe ir al último. Ej:

exception when no_data_found then
--Por datos no encontrados
when others then
--Por cualquier otra excepcion que ocurra
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

RE:Tratamiento de errores dentro de un Procedure

Publicado por DACH (258 intervenciones) el 26/03/2003 15:42:30
Hola
Las excepciones anteriores te sirven solo para querys (DML), el error ora - 11111 no lo conozco.
Te puedo recomendar declarar una variable de tipo exception.
Ejemplo
declare
Error EXCEPTION;
PRAGMA EXCEPTION_INIT(Error, -11111)
begin
exception
when error then
---bla bla bla bla
end;


Salu2.-
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
sin imagen de perfil

RE:Tratamiento de errores dentro de un Procedure

Publicado por Juan Carlos Ribero (3 intervenciones) el 02/04/2003 22:06:50
Hola Cristina Alvarez.

El error ORA-11111 ocurre porque el nombre de un archivo ("datafile") es desconocido o es incorrecto.
Quizás tenías la base de datos montada (o instalada) y en algun momento se volvió a instalar (o montar); esto puede ser
porque se ejecutó el comando CREATE CONTROLFILE o se hizo una operación de recuperación de datos de un backup pero este
ultimo se hizo sobre lo que había antes y no sobre lo que hay ahora.
La solución es renombrar (actualizar) el nombre del archivo que está dando problemas.

A continuación te envío un ejemplo de lo que te comenta "Byron [email protected]"; lo que puedes hacer es agregar
en el EXCEPTION el SQLERRM para tener una descripciòn de este y cualquier otro error. Aclaro que puedes no usar el
RAISE_APPLICATION_ERROR y en su lugar solo validar el valor de las variables "V_ERROR" y "V_DESERROR".
Aquí lo que puedes hacer es desde donde estás llamando a PAC1.PR1 es validar el valor de estas variables y segun su
resultado ejecutar una acción determinada.
Espero que todo esto te sirva de algo.

Atentamente,

Juan Carlos Ribero.

--- Tablas
SQLWKS> DESC CLIENTES;
Column Name Null? Type
------------------------------ -------- ----
COD_CLIENTE NUMBER(8)
NUM_TELEFONO NUMBER(8)
SQLWKS> DESC TEL_NEW_CLIENTES;
Column Name Null? Type
------------------------------ -------- ----
COD_CLIENTE_NEW NUMBER(8)
NUM_TELEFONO NUMBER(8)


-
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