--Ejercicios Propuestos -- 1 Desarrollar un procedimiento que visualice el apellido y la fecha de alta de todos los empleados ordenados por apellido CREATE OR REPLACE PROCEDURE visuliceEmpleado AS vemployee_lastname EMPLOYEES.LAST_NAME%type; vhire_date EMPLOYEES.hire_date%type; CURSOR C1 is Select last_name, hire_date From EMPLOYEES Order by last_name; r_employee C1%rowtype; BEGIN OPEN C1; FETCH C1 into r_employee; while(C1%FOUND) LOOP EXIT WHEN C1%NOTFOUND; vemployee_lastname := r_employee.last_name; vhire_date := r_employee.hire_date; DBMS_OUTPUT.PUT_LINE('Apellido' || vemployee_lastname || ' fecha de alta' || vhire_date); FETCH C1 INTO r_employee; END LOOP; CLOSE C1; END visuliceEmpleado; EXECUTE visuliceEmpleado(); --2) Codificar un procedimiento que muestre el nombre de cada departamento y el número de empleados que tiene. CREATE OR REPLACE PROCEDURE verDepandEmp as vnombreDep DEPARTMENTS.DEPARTMENT_NAME%type; vnumEmp INT; CURSOR C1 is Select COUNT(e.department_id) AS cantidad, d.DEPARTMENT_NAME From Departments d join Employees e on d.department_id = e.department_id group by d.department_name; r_cursor C1%ROWTYPE; BEGIN OPEN C1; FETCH C1 INTO r_cursor; while(C1%FOUND) LOOP EXIT WHEN C1%NOTFOUND; vnumEmp := r_cursor.cantidad; vnombreDep := r_cursor.department_name; DBMS_OUTPUT.PUT_LINE('El departamento ' || vnombreDep || ' tiene ' || vnumEmp || ' empleados'); FETCH C1 INTO r_cursor; END LOOP; CLOSE C1; END verDepandEmp; EXECUTE verDepandEmp(); --3) Escribir un procedimiento que reciba una cadena y visualice el apellido y el número de empleado de todos los empleados cuyo apellido contenga la cadena especificada. Al finalizar visualizar el número de empleados mostrados. CREATE OR REPLACE PROCEDURE ver_emp_apell(cadena varchar2) as cad varchar2(10); CURSOR C1 is SELECT LAST_NAME, EMPLOYEE_ID FROM EMPLOYEES WHERE LAST_NAME LIKE cad; r_employee C1%ROWTYPE; BEGIN cad := '%' || cadena || '%'; OPEN C1; FETCH C1 INTO r_employee; while (C1%FOUND) LOOP EXIT WHEN (C1%NOTFOUND); DBMS_OUTPUT.put_line('Empleado' || r_employee.last_name || ' id ' || r_employee.employee_id); FETCH C1 INTO r_employee; END LOOP; DBMS_OUTPUT.put_line('Total de empleados: ' || C1%ROWCOUNT); CLOSE C1; END ver_emp_apell; EXECUTE ver_emp_apell('en'); CREATE OR REPLACE PACKAGE PAQUETE IS FUNCTION nombre_depto(fdepartment_id in number) RETURN VARCHAR2; PROCEDURE ver_emp_apell(cadena varchar2); PROCEDURE verDepandEmp; END PAQUETE;