Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Realizar un programa que modifique el tipo de un cliente, cuyo DNI se lee por teclado, asignándole 'EE'. Se debe controlar mediante una excepción el caso --de que el cliente no exista.
- SET SERVEROUTPUT ON
- ACCEPT DNI PROMPT 'INTRODUCE DNI DEL CLIENTE';
- DECLARE
- X NUMBER(10);
- MI_ERROR EXCEPTION;
- BEGIN
- SELECT COUNT (*) INTO X FROM TCLIENTE WHERE DNI='&DNI';
- IF X=0 THEN
- RAISE MI_ERROR;
- END IF;
- UPDATE TCLIENTE SET TIPO='EE' WHERE DNI='&DNI';
- EXCEPTION
- WHEN MI_ERROR EXCEPTION
- DBMS_OUTPUT.PUT_LINE('EL CLIENTE NO EXISTE');
- END;
- /
- --Realizar un programa que, utilizando un cursor, recorra todos los empleados generando una excepción en el instante en el que se encuentre uno que es jefe --de sí mismo. En ese momento el programa debe parar.
- SET SERVEROUPUT ON;
- CURSOR CEMP IS
- SELECT * FROM EMPLEADO
- X CEMP%ROWTYPE;
- ERROR EXCEPTION;
- BEGIN
- LOOP;
- FETCH CEMP INTO X;
- EXIT WHEN CEMP%NOTFOUND;
- IF X.NUM_EMP=X.NUM_SUP THEN
- RAISE ERROR;
- END IF;
- END LOOP;
- CLOSE CEMP;
- EXCEPTION
- WHEN ERROR THEN
- DBMS_OUTPUT.PUT_LINE('ESE EMPLEADO ES JEFE DE SI MISMO');
- --Modificar el programa anterior haciendo que se genere una excepción cada vez que se encuentre a alguien que es jefe de sí mismo, es decir, que no se pare --cuando se genera la primera excepción.
- SET SERVEROUPUT ON;
- CURSOR CEMP IS
- SELECT * FROM EMPLEADO
- X CEMP%ROWTYPE;
- ERROR EXCEPTION;
- BEGIN
- LOOP;
- FETCH CEMP INTO X;
- EXIT WHEN CEMP%NOTFOUND;
- BEGIN
- IF X.NUM_EMP=X.NUM_SUP THEN
- RAISE ERROR;
- END IF;
- EXCEPTION
- WHEN_ERROR THEN
- DBMS_OUTPUT.PUT_LINE('ESE EMPLEADO ES JEFE DE SI MISMO');
- END LOOP;
- CLOSE CEMP;
- END;
- /
- --Escribir un disparador de base de datos que haga fallar cualquier operación de modificación del apellido o del número de un empleado, o que suponga una ---subida de sueldo superior al 10%.
- CREATE OR REPLACE TRIGGER NUMEMP
- BEFORE UPDATE OF NOMBRE,SALARIO , NUM_EMP ON EMPLEADO FOR EACH ROW
- ERROR EXCEPTION;
- DECLARE
- IF :NEW.SALARIO> :OLD.SALARIO*1,10 OR :NEW.NUM_EMP!= :OLD.NUM_EMP OR :NEW.NOMBRE != :OLD.NOMBRE THEN
- RAISE ERROR;
- END IF;
- EXCEPTION
- WHEN ERROR THEN
- DMBS_OUTPUT.PUT_LINE(EL SALARIO DEL EMPLEADO NO PUEDE SER MAYOR QUE EL 10% O EL NUMERO O NOMBRE DE EMPLEADOS NO PUEDEN SER MODIFICADOS);
- END;
- /
- --Escribir un trigger de base de datos que impida borrar una provincia de la tabla TPROVINCIA si hay clientes en ella.
- CREATE OR REPLACE TRIGGER BORRARPROV
- BEFORE DELETE ON TPROVINCIA FOR EACH ROW
- DECLARE
- X NUMBER(5);
- ERROR_SUP EXCEPTION;
- --LANZAR ERROR_SUP
- SELECT COUNT(DNI) INTO X FROM TCLIENTE
- WHERE PROVINCIA= :OLD.CODIGO;
- IF X !=0 THEN
- RAISE ERROR_SUP;
- END IF;
- EXCEPTION
- WHEN ERROR_SUP THEN
- DMBS_OUTPUT.PUT_LINE(' NO SE IMPIDE BORRAR LA TABLA');
- END;
- /
- --Asociar a la tabla de “capturas_en_solitario” un disparador de base de datos que impida insertar una tupla cuando los dos avalistas sean el mismo.
- --Construir un trigger de base de datos que informe de que se ha insertado en la tabla de capturas una tupla con una trucha de cero centímetros de longitud --o cero gramos de peso.
- --Escribir un trigger de base de datos asociado a la tabla de capturas en evento que lance un mensaje por pantalla cuando el evento corresponda a un lugar --de la comunidad del País Vasco.
Advertisement
Add Comment
Please, Sign In to add comment