ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

PL/SQL Laboratorio 2: CURSORES y EXCEPCIONES

Lord ValdomeroApuntes30 de Noviembre de 2020

810 Palabras (4 Páginas)489 Visitas

Página 1 de 4

UTFSM – Sede Viña del Mar

PL/SQL                                                                

Laboratorio 2: CURSORES y EXCEPCIONES

OBJETIVOS:

Acercar al alumno a la práctica del manejo de cursores y algunas excepciones.

EJERCICIOS

Utilizando SqlDeveloper:

  1. Escriba el siguiente código para PL/SQL y comente que hace. Explique por que está generando una excepción.

DECLARE
          v_nomemp VARCHAR2(50);
BEGIN
         SELECT nom_emp
         INTO v_nomemp
         FROM empleado
    WHERE cod_supervisor = 7839;
     dbms_output.put_line('La lectura del cursor es: ' || v_nomemp);
EXCEPTION

WHEN TOO_MANY_ROWS THEN

dbms_output.put_line ( ‘MUCHAS FILAS’);
end;

  1. Reescriba el código de forma que muestre lo que se solicita.
  1. Escriba un bloque anónimo para seleccionar el nombre de los empleados cuyo supervisor tiene cod_supervisor igual a 7368. Si revisa la tabla empleado, no existe ningún empleado, por lo tanto utilice NO_DATA_FOUND para enviar un mensaje.
  1. Muestre los nombres de los departamentos con código de departamento distinto  a 10 implementando un cursor. Declare una variable que utilice %ROWTYPE para definir su tipo. Utilíce el atributo %FOUND del cursor para condicionar mostrar el nombre del departamento sino que salga del bloque.
  1. Muestre el código del empleado, nombre del empleado y departamento al cual pertenece implementando un cursor. Defina las variables utilizando %TYPE.  Para la iteración ocupe LOOP, EXIT WHEN con %NOTFOUND y END LOOP. Además debe indicar el total de registros afectados (%ROWCOUNT)

Resultado esperado:

CODIGO NOMBRE       DEPTO

7839   Karla          Finanzas

7566   Juan P.        Desarrollo

7902   Fabián         Desarrollo

7369   Juan           Desarrollo

7698   Blanca         Ventas

7499   Allen          Ventas

….

Total de registros: XX

  1. Haga  el ejercicio anterior con WHILE – LOOP

  1. Haga el ejercicio anterior con FOR – LOOP. Ver el uso de %ROWCOUNT.
  1. El siguiente código debe ser depurado. Depúrelo e indique porque aparece la excepción de cursor inválido.

SET SERVEROUTPUT ON;

DECLARE
CURSOR c_sueldo
IS
SELECT *
 FROM sueldo;

Reg_sueldo  sueldo%TYPE;
 
BEGIN
  FETCH c_sueldo INTO reg_sueldo;

   DBMS_OUTPUT.PUT_LINE(  ‘CODIGO’ || ‘ ‘ || ‘MINIMO’ || ‘       ‘ || ‘MAXIMO’);

LOOP
  FETCH c_sueldo INTO reg_sueldo;

   DBMS_OUTPUT.PUT_LINE(  c_sueldo.grado || ‘      ‘ || c_sueldo.sueldo_minimo || ‘         ‘ || c_sueldo.sueldo_maximo);

END LOOP;

  CLOSE c_sueldo;

   FETCH c_sueldo INTO reg_sueldo;

EXCEPTION

WHEN invalid_cursor THEN

    DBMS_OUTPUT.PUT_LINE( ‘CURSOR INVÁLIDO’);
END;

  1. Cursor de actualización: Actualice el código de supervisor a 7697 a los empleados cuyo supervisor es el 7566. Verifique con un select antes de programar el bloque pl/sql a cuales empleados debiera modificar.
  1. Cursor con parámetros: Implemente un cursor con el parámetro p_ubica de tipo CHAR seleccionando todos los datos de la tabla depto donde la ubicación sea igual al parámetro p_ubica. Al abrir el cursor coloque como parámetro ‘Valpo’, recorra el cursor y muestre el código del depto, el nombre del depto y la ubicación que debería ser ‘Valpo’.
  1. Ejercicios tipo Certamen:
  1. Permita que el usuario ingrese un código de supervisor y que el bloque anónimo, según el departamento al que pertenece ese supervisor: A) muestre la cantidad de supervisores, si el supervisor pertenece al departamento 10 o 20, B) Muestre la cantidad de supervisores distintos, si el supervisor pertenece al departamento 30 o 40 y C) Que muestre el mensaje correspondiente si el código de supervisor no existe. (20 puntos)
  1. Escriba un bloque anónimo que reciba el código del empleado a eliminar. Cuando se borra un empleado todos los empleados que dependían de él pasarán a depender del supervisor del empleado borrado.  Validar si el código no existe. (20 puntos)
  1. Se solicita insertar un nuevo departamento, recibe todos los datos del departamento. Debe validar que no se ingrese un código de departamento duplicado y/o nombre de departamento duplicado. Debe enviar un mensaje indicando que se realizó la inserción. (30 puntos)
  1. Implemente un cursor que muestre el nombre del empleado y el nombre del departamento al cual pertenece, de los empleados que tienen el sueldo más alto. (30 puntos)

Observación: 

Al finalizar envie el archivo a catherine.gomez@usm.cl con el título PL_LAB_2 y en el email el nombre del alumno.

CGB                

...

Descargar como (para miembros actualizados) txt (5 Kb) pdf (69 Kb) docx (11 Kb)
Leer 3 páginas más »
Disponible sólo en Clubensayos.com