Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE PROCEDURE MOD_PROFESORS (PRO_COD_CENTRO PROFESORS.COD_CENTRO%TYPE,
- PRO_DNI PROFESORS.DNI%TYPE,
- PRO_APELLIDOS PROFESORS.APELLIDOS%TYPE,
- PRO_ESPECIALIDAD PROFESORS.ESPECIALIDAD%TYPE,
- PRO_SALARIO PROFESORS.SALARIO%TYPE,
- PRO_TIPO_MOV PROFESORS_MOV.TIPO_MOV%TYPE)
- IS
- PRO_COUNTERA NUMBER;
- PRO_COUNTERB NUMBER;
- PROFE_YA_EXISTE EXCEPTION;
- PROFE_NOT_EXISTE EXCEPTION;
- COD_CENTRO_NOT_EXISTE EXCEPTION;
- SALARIO_NO_MODIFICADO EXCEPTION;
- BEGIN
- IF (PRO_TIPO_MOV = 'A') THEN
- SELECT COUNT(DNI) INTO PRO_COUNTERA FROM PROFESORS
- WHERE DNI = PRO_DNI;
- IF (PRO_COUNTERA = 1) THEN
- RAISE PROFE_YA_EXISTE;
- ELSE
- INSERT INTO PROFESORS VALUES
- (PRO_COD_CENTRO, PRO_DNI, PRO_APELLIDOS,
- PRO_ESPECIALIDAD, PRO_SALARIO);
- DBMS_OUTPUT.PUT_LINE('FILA INSERTADA CORRECTAMENTE');
- END IF;
- END IF;
- IF (PRO_TIPO_MOV = 'B') THEN
- SELECT COUNT(DNI) INTO PRO_COUNTERA FROM PROFESORS
- WHERE DNI = PRO_DNI;
- IF (PRO_COUNTERA = 0) THEN
- RAISE PROFE_NOT_EXISTE;
- ELSE
- DELETE FROM PROFESORS WHERE DNI = PRO_DNI;
- DBMS_OUTPUT.PUT_LINE('FILA BORRADA CORRECTAMENTE.');
- END IF;
- END IF;
- IF (PRO_TIPO_MOV = 'C') THEN
- SELECT COUNT(*) INTO V_COUNTERA FROM PROFESORS WHERE DNI = PRO_DNI;
- SELECT COUNT(*) INTO V_COUNTERB FROM CENTRES WHERE COD_CENTRO = PRO_COD_CENTRO;
- IF V_COUNTERA = 0 THEN
- RAISE PROFE_NOT_EXISTE;
- ELSIF V_COUNTERB = 0 THEN
- RAISE COD_CENTRO_NOT_EXISTE;
- ELSE
- UPDATE PROFESORS SET COD_CENTRO = PRO_COD_CENTRO WHERE DNI = PRO_DNI;
- END IF;
- END IF;
- IF (PRO_TIPO_MOV = 'S') THEN
- SELECT COUNT(SALARIO) INTO PRO_COUNTERA FROM PROFESORS WHERE DNI = PRO_DNI;
- IF (PRO_COUNTERA = 0) THEN
- RAISE SALARIO_NO_MODIFICADO;
- ELSE
- UPDATE PROFESORS SET SALARIO = PRO_SALARIO WHERE
- DNI = PRO_DNI;
- DBMS_OUTPUT.PUT_LINE('SALARIO ACTUALIZADO CORRECTAMENTE.');
- END IF;
- END IF;
- EXCEPTION
- WHEN PROFE_YA_EXISTE THEN
- DBMS_OUTPUT.PUT_LINE('NÚMERO DE DNI '|| PRO_DNI ||' YA
- EXISTENTE EN LA BASE DE DATOS.');
- WHEN PROFE_NOT_EXISTE THEN
- DBMS_OUTPUT.PUT_LINE('NÚMERO DE DNI '|| PRO_DNI ||' NO
- EXISTENTE EN LA BASE DE DATOS.');
- WHEN COD_CENTRO_NOT_EXISTE THEN
- DBMS_OUTPUT.PUT_LINE('NÚMERO DE CENTRO '||
- PRO_COD_CENTRO ||' NO EXISTENTE A LA BASE DE DATOS.');
- WHEN SALARIO_NO_MODIFICADO THEN
- DBMS_OUTPUT.PUT_LINE('SALARIO
- DE PROFESOR CON DNI '|| PRO_DNI ||' NO PUEDE SER ACTUALIZADO.');
- END;
Add Comment
Please, Sign In to add comment