GreysitoErPutoAmo

PL/SQL EXCEPCIONES

May 22nd, 2015
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.60 KB | None | 0 0
  1. --Escribe un procedimiento que reciba todos los datos de un nuevo empleado y procese la transacción de alta, gestionando
  2. --posibles errores. El procedimiento deberá gestionar en concreto los siguientes puntos:
  3. -– no_existe_departamento.
  4. -– no_existe_director.
  5. -– numero_empleado_duplicado.
  6. -– Salario nulo: con RAISE_APPLICATION_ERROR.
  7. -– Otros posibles errores de Oracle visualizando código de error y el mensaje de error.
  8.  
  9.  
  10. CREATE OR REPLACE PROCEDURE alta_emp
  11. (
  12.   emp_no_1 emple.emp_no%TYPE,
  13.   apellido_1 emple.apellido%TYPE,
  14.   oficio_1 emple.oficio%TYPE,
  15.   dir_1 emple.dir%TYPE,
  16.   fecha_1 emple.fecha_alt%TYPE,
  17.   salario_1 emple.salario%TYPE,
  18.   comision_1 emple.comision%TYPE DEFAULT NULL,
  19.   dept_1 emple.dept_no%TYPE
  20. )
  21. AS
  22. vdir EMPLE.DIR%TYPE DEFAULT NULL;
  23. vdep DEPART.DEPT_NO%TYPE DEFAULT NULL;
  24. vsal EMPLE.SALARIO%TYPE DEFAULT NULL;
  25.  
  26. BEGIN
  27.  
  28.   SELECT dept_no INTO vdep
  29.   FROM depart WHERE dept_no = dept_1;
  30.  
  31.   SELECT emp_no INTO vdir
  32.   FROM emple WHERE emp_no = dir_1;
  33.  
  34.   INSERT INTO EMPLE VALUES
  35.   (emp_no_1, apellido_1, oficio_1, dir_1, fecha_1, salario_1, comision_1, dept_1);
  36.  
  37.   EXCEPTION
  38.   WHEN NO_DATA_FOUND THEN
  39.   IF vdep IS NULL THEN
  40.     RAISE_APPLICATION_ERROR(-20005,'ERROR No existe el departamento');
  41.   ELSIF vdir IS NULL THEN
  42.     RAISE_APPLICATION_ERROR(-20005,'ERROR No existe el director');
  43.   ELSE
  44.     RAISE_APPLICATION_ERROR(-20005,'ERROR No se encuentran datos');
  45.   END IF;
  46.  
  47.   WHEN DUP_VAL_ON_INDEX THEN
  48.     DBMS_OUTPUT.PUT_LINE('ERROR emp_no duplicado');
  49.     RAISE;
  50.    
  51.   WHEN OTHERS THEN
  52.     DBMS_OUTPUT.PUT_LINE(SQLCODE);
  53.  
  54. END alta_emp;
  55. /
Add Comment
Please, Sign In to add comment