Subido por Rubeen Tomalaa

SQL

Anuncio
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.
Descargar