Como crear mis propias excepciones

karl
23 de Agosto del 2004
Hola que tal ojala me pueda alguien ayudar

Lo que requiero es generar una excepcion... Si entra en un bloque if determinado es cuando se genera la instruccion y lo que quiero es que termine

Como puedo hacer para que entre a ese bloque y se salga del Procedure en el que esta.

Gracias

MJPP
23 de Agosto del 2004
Pon return; y se sale

FUNCTION f RETURN NUMBER IS
x NUMBER;
BEGIN
x :=13;
IF . . . THEN
RETURN;
END IF;
RETURN x;
END;

Pablo Ponte Miserendino
23 de Agosto del 2004
Si....puedes poner RETURN y listo...pero eso es solo una solución a este caso particular. El tratamiento de errores es un tema fundamental al diseñar tus programas, ademas PL/SQL tiene, a diferencia de otros lenguajes, unas estructuras muy simples y flexibles para realizar un buen tratamiento de errores.
Ahora si, respondiendo a tu pregunta original:
una exception propia es como un tipo de variable, la tenes que declarar en la cabecera del programa como el resto de las variables. Luego lo que tenes que hacer en tu programa es usar la instrucción RAISE <<exception>> para que se dirija el bloque de exceptions mas pròximo y trate de resolver este problema.
Creo que un ejemplo vale mas:

DECLARE
l_V1 varchar2(5);
l_V2 number;

e_errorpropio EXCEPTION; --aca es donde declaro la exception
BEGIN
select campo1
, campo2
from tabla
where condiciones;

if condicion 1 then
RAISE e_errorpropio; --aca entro en el bloque de exceptions con un error propio
else
<<algun comando>>;
end if;
EXCEPTION
when e_errorpropio then
<<lo que quieras hacer cuando salga este error>>;
when others then
<<si salta por cualquier otro lado>>;
END;

como vez esta estructura te sirve tanto para procedures , functions o cualquier tipo de programa....

Cualquier cosa no dudes en escribirme..

Inma
23 de Agosto del 2004
Puedes utilizar la función:

PRAGMA RESTRICT_REFERENCES (<Funcion>, WNDS);