Está en la página 1de 3

October 11th 2011 Data Bases II Notes

JUAN LIZARAZO

MANEJO DE EXCEPCIONES
Estructura general para incluir excepciones!!

Declare Variables Begin ------Exception ------End: Estructura bloque excepciones: Exception When <Excption1> then //// Tratamiento When <Excepcion2>then /// Tratamiento When <exception3> then /// tratamiento When others then ///tratamiento Excepciones de sistema Acces_into_null Cursor_already_open: El cursor ya esta abierto. Not_logged_on: Sin session iniciada Program_error Too_many_rows: Demasiadas filas para mostrar (cuando se usa select) Storage_error: Error de almacenamiento Value_error: Error de valor. Zero_division: Division por cero No_data_found: Cuando el select no encuenta ningun registro. Rowtype_mismatch: Cuando se usan variables de tipo registro que no concuerdan. Case_not_foud: Cuando se usa switch y no se encuentra el case apropiado. En PL no existe el switch pero si se usan cases que es el equivalente. SQLCODE > Codigo del error de Oracle SQLERRM -> Mensaje del error! Dos variables importantes para identificar excepciones y errores y poder asi resolver el problema.

October 11th 2011 Data Bases II Notes Ejemplo de excepcin: Set serveroutput on set verify off Declare v_nombre employees.first_name%type; v_apellido employees.last_name%type; n_codigo employees.employee_id%type:=&codigo; Begin

JUAN LIZARAZO

select first_name, last_name into v_nombre, v_apellido from employees where employee_id=codigo; dbms_output.put_line('Nombre='|| v_nombre || 'Apellido= \\ v_apellido); End; Exception When no_data_found then dbms_output_put_line ('Empleado No existe'); when other then dbms_output_put_line ('Error'): // Siempre utilizar others then

EXCEPCIONES GENERADAS POR EL USUARIO El usuario tambin puede definir variables. Se define una o varias variables del tipo exception . Luego se lanza la excepcin con la palabra reservada RAISE. Ejemplo:
Set serveroutput on set verify off Declare v_nombre employees.first_name%type; v_apellido employees.last_name%type; n_codigo employees.employee_id%type:=&codigo; valor1 number(1):=10; n_valor1 number(1):=0;

Ex_zero_divide exception; Begin If_valor1= 0 then Raise ex_zero_divide; Else V_valor=n_valor/n_valor1;

October 11th 2011 Data Bases II Notes

JUAN LIZARAZO

End if; Exception When ex_zero_divide then Dbms_output_put_line (No se puede . ); When others then ////// End;

PAQUETES PL/SQL Agrupacion logica de Funciones, Procedimientos, (Variables, tipos globales) Nombre: PK_<nombre del paquete> se compone por header (.hed) Definicion de funciones, procedimientos, Variables, tipos. Body (.bod) Implementacion Create or replace package <nombre del paquete> as //definiciones PR_INCREMENTAR_SALARIO (pr_por_incremento in number); Function fu_funcion1 (pr1 number) return number; End <nombre paquete>;

Alter package <nombre del paquete> Compile ; Alter procedure <nombre del procedimiento> Compile; Refrenciar: (funcin, procedimiento C Paquete) Exec <nombre del paquete> .<nombre procedimiento>

También podría gustarte