M2 - Bases de dades / Exercicis UF3: Llenguatges SQL / Solucions PL-SQL T7
De wikiserver
La revisió el 16:56, 25 abr 2016 per Rsort (Discussió | contribucions) (→T7- Tipus de dades compostes)
Solución 7-1: Uso de Cursores Explícitos
En esta lección, realizará dos ejercicios:
- Primero, utilizará un cursor explícito para procesar un número de filas de una tabla y rellenar otra tabla con los resultados mediante un bucle FOR de cursor.
- Después, escribirá un bloque PL/SQL que procese la información con dos cursores, incluido uno que utilice un parámetro.
1) Cree un bloque PL/SQL que realice las siguientes acciones:
- a) En la sección de declaraciones, declare e inicialice una variable llamada v_deptno de tipo NUMBER. Asigne un valor de identificador de departamento válido (consulte los valores en la tabla del paso d).
DECLARE v_deptno NUMBER := 10;
- b) Declare un cursor llamado c_emp_cursor, que recupere last_name, salary y manager_id de los empleados que trabajan en el departamento especificado en v_deptno.
CURSOR c_emp_cursor IS SELECT last_name, salary,manager_id FROM employees WHERE department_id = v_deptno;
- c) En la sección ejecutable, utilice el bucle FOR de cursor para realizar operaciones en los datos recuperados. Si el salario del empleado es menor que 5.000 y si el identificador de superior es 101 o 124, aparece el mensaje “<<last_name>> Due for a raise”. De lo contrario, aparece el mensaje “<<last_name>> Not Due for a raise”.
BEGIN FOR emp_record IN c_emp_cursor LOOP IF emp_record.salary < 5000 AND (emp_record.manager_id=101OR emp_record.manager_id=124) THEN DBMS_OUTPUT.PUT_LINE (emp_record.last_name || ' Due for a raise'); ELSE DBMS_OUTPUT.PUT_LINE (emp_record.last_name || ' Not Due for a raise'); END IF; END LOOP; END;