Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Escribe un procedimiento que reciba todos los datos de un nuevo empleado y procese la transacción de alta, gestionando
- --posibles errores. El procedimiento deberá gestionar en concreto los siguientes puntos:
- -– no_existe_departamento.
- -– no_existe_director.
- -– numero_empleado_duplicado.
- -– Salario nulo: con RAISE_APPLICATION_ERROR.
- -– Otros posibles errores de Oracle visualizando código de error y el mensaje de error.
- CREATE OR REPLACE PROCEDURE alta_emp
- (
- emp_no_1 emple.emp_no%TYPE,
- apellido_1 emple.apellido%TYPE,
- oficio_1 emple.oficio%TYPE,
- dir_1 emple.dir%TYPE,
- fecha_1 emple.fecha_alt%TYPE,
- salario_1 emple.salario%TYPE,
- comision_1 emple.comision%TYPE DEFAULT NULL,
- dept_1 emple.dept_no%TYPE
- )
- AS
- vdir EMPLE.DIR%TYPE DEFAULT NULL;
- vdep DEPART.DEPT_NO%TYPE DEFAULT NULL;
- vsal EMPLE.SALARIO%TYPE DEFAULT NULL;
- BEGIN
- SELECT dept_no INTO vdep
- FROM depart WHERE dept_no = dept_1;
- SELECT emp_no INTO vdir
- FROM emple WHERE emp_no = dir_1;
- INSERT INTO EMPLE VALUES
- (emp_no_1, apellido_1, oficio_1, dir_1, fecha_1, salario_1, comision_1, dept_1);
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- IF vdep IS NULL THEN
- RAISE_APPLICATION_ERROR(-20005,'ERROR No existe el departamento');
- ELSIF vdir IS NULL THEN
- RAISE_APPLICATION_ERROR(-20005,'ERROR No existe el director');
- ELSE
- RAISE_APPLICATION_ERROR(-20005,'ERROR No se encuentran datos');
- END IF;
- WHEN DUP_VAL_ON_INDEX THEN
- DBMS_OUTPUT.PUT_LINE('ERROR emp_no duplicado');
- RAISE;
- WHEN OTHERS THEN
- DBMS_OUTPUT.PUT_LINE(SQLCODE);
- END alta_emp;
- /
Add Comment
Please, Sign In to add comment