Ingeniería en Tecnologías de la Información “Laboratorio 6” Collahuazo Jose Tercer Parcial Sangolquí, 29 de marzo del 2021 Paso 1: Ubicación de recursos a. Forme grupos de máximo dos personas un mayor número no se considerará válido el taller Paso 2: Planteamiento de Problema 1. Crear un procedimiento llamado ADD_JOB para insertar un nuevo puesto de trabajo en la tabla JOBS, ingrese el id y el puesto de trabajo mediante parámetros. CREATE PROCEDURE ADD_JOB(Id IN jobs.job_id%type,title IN jobs.job_title%type) IS BEGIN INSERT INTO JOBS values(Id,title,'1222','123'); END; a. Ejecute el procedimiento ADD_JOB con el valor para jod_id igual a “IT_DBA” y el job_title igual a “Database Administrator” EXECUTE ADD_JOB('IT_DBA','Database Administrator'); 2. Crear un procedimiento llamado DEL_JOB para eliminar un puestro de trabajo de la tabla JOBS, crear la excepción necesaria cuando un puesto de trabajo no pueda ser borrado o no exista en la base a. Llame al procedimiento anterior para eliminar el puesto de trabajo con el codigo IT_DBA CREATE OR REPLACE PROCEDURE DEL_JOB(v_trabajo jobs.job_id%type) IS counter jobs.max_salary%type :=0; JOB_ID_NOT_FOUND EXCEPTION; CURSOR CURSORT is select JOB_ID from JOBS; BEGIN FOR flag IN CURSORT LOOP IF flag.job_id =v_trabajo THEN counter :=counter+1; END IF; END LOOP; IF counter=1 THEN DELETE FROM JOBS WHERE JOB_ID=V_TRABAJO; DBMS_OUTPUT.PUT_LINE('Se borro correctamente '||V_TRABAJO); ELSE RAISE JOB_ID_NOT_FOUND; END IF; EXCEPTION WHEN JOB_ID_NOT_FOUND THEN DBMS_OUTPUT.PUT_LINE('Trabajo no encontrado'); END; SET SERVEROUTPUT ON EXECUTE DEL_JOB('IT_DBA'); 3. Crear un procedimiento llamado QUERY_EMP que recupere el salario y job_id de la tabla employees cuando envié como parámetro el código del empleado. CREATE OR REPLACE PROCEDURE QUERY_EMP(empleado IN employees.employee_id%type,trabajo OUT employees.job_id%type,Esalario OUT employees.salary%type) IS BEGIN SELECT SALARY,JOB_ID INTO ESALARIO, jobId FROM EMPLOYEES where EMPLOYEE_ID=empleado; DBMS_OUTPUT.PUT_LINE('El salario es '||ESALARIO||' con ID '||jobId); END; / SET SERVEROUTPUT ON DECLARE Ide employees.job_id%type; sal employees.salary%type; BEGIN QUERY_EMP(150,IDE,SAL); DBMS_OUTPUT.PUT_LINE('El salario es '||sal||' y el ID '||Ide); END; 4. Crear un procedimiento llamado QUERY_DEP que envía como parámetro el código de un departamento y me devuelva información del número de empleados que existen y cual es el valor total de salarios pagados. CREATE OR REPLACE PROCEDURE QUERY_DEP(departamento IN departments.department_id%type ,nempleados OUT edepartments.department_id%type,nempleados OUT count(employees.salary%type) IS BEGIN SELECT COUNT(*), AVG(salary), department_name FROM employees e, departments d WHERE e.department_id = d.department_id GROUP BY department_name; END; / 5. Crear un procedimiento llamado QUERY_CIUDAD que envía como parámetro el código de un departamento y me devuelva información del nombre de la ciudad y los empleados que trabajan en ese departamento. CREATE OR REPLACE PROCEDURE QUERY_CIUDAD (p_dep_id_id IN employees.department_id%TYPE) IS v_name employees.first_name%TYPE; v_dep_id departments.department_name%TYPE; v_loc_id employees.salary%TYPE; cursor micursor IS select e.first_name,l.city from employees e, departments d, locations l where e.department_id=d.department_id and l.location_id=d.location_id and e.department_id=p_dep_id_id; BEGIN FOR emp_record IN micursor LOOP DBMS_OUTPUT.PUT_LINE(TO_CHAR(emp_record.first_name)||' '||emp_record.city); END LOOP; END QUERY_CIUDAD; / Comprobación Paso 3: Entrega de Trabajos a. Cada grupo tendrá un mínimo de 50 minutos para exponer el sustento de su investigación, posteriormente se realizará un debate entre todos los grupos participantes Bibliografía: Material de estudio propuesto por Paul Diaz Zuñiga.