Diferència entre revisions de la pàgina «M2 - Bases de dades / Exercicis conceptes fundamentals UF3: PL-SQL»

De wikiserver
Dreceres ràpides: navegació, cerca
Línia 30: Línia 30:
  
 
b) En un bloc PL/SQL crea un cursor que recuperi tots els empleats ordenats per departament i recorre'l per omplir la taula CAPS convenientment.
 
b) En un bloc PL/SQL crea un cursor que recuperi tots els empleats ordenats per departament i recorre'l per omplir la taula CAPS convenientment.
 +
<!--
 +
DECLARE
 +
v_dept_id EMPLOYEES.DEPARTMENT_ID%TYPE := -1;
 +
v_manager_id  EMPLOYEES.MANAGER_ID%TYPE;
 +
CURSOR c_emp_cursor IS
 +
SELECT first_name, last_name, department_id
 +
FROM employees
 +
ORDER BY department_id;
 +
v_emp_record CURSOR%ROWTYPE;
 +
BEGIN
 +
OPEN c_emp_cursor;
 +
LOOP
 +
  FETCH c_emp_cursor INTO v_emp_record;
 +
  EXIT WHEN c_emp_cursor%NOTFOUND;
 +
    IF v_emp_record.department_id <> v_dept_id THEN
 +
      v_manager_id := CAP(emp_record.department_id);
 +
      SELECT department_name INTO v_nom_dept
 +
      FROM DEPARTMENTS
 +
      WHERE department_id = emp_record.department_id;
 +
      v_dept_id := emp_record.department_id;
 +
    ELSE
 +
      LOOP
 +
      FETCH c_emp_cursor INTO v_emp_record;
 +
      EXIT WHEN c_emp_cursor%NOTFOUND;
 +
     
 +
      INSERT INTO CAPS
 +
      VALUES (v_nom_dept, v_firs_name, v_last_name, v_num_empleats);
 +
    END IF;   
 +
   
 +
   
 +
   
 +
  END LOOP;
 +
END;
 +
/
 +
 +
-->
 +
 +
 +
  
 
2.- Fes un bloc PL/SQL que crei una taula indexada per job_title i crea un cursor que recuperi tots els empleats ordenats per departament i recorre'l per omplir la taula amb la següent informació: número d'empleats que tenen aquest ofici i el número de departaments que tenen aquest ofici. Mostra el resultat.
 
2.- Fes un bloc PL/SQL que crei una taula indexada per job_title i crea un cursor que recuperi tots els empleats ordenats per departament i recorre'l per omplir la taula amb la següent informació: número d'empleats que tenen aquest ofici i el número de departaments que tenen aquest ofici. Mostra el resultat.

Revisió del 21:57, 18 març 2019

Esquema HR

1.- Crea una taula CAPS (CREATE TABLE) que contingui els següent camps: Nom_Department, First_Name, Last_Name i Num_empleats.

CREATE TABLE CAPS(
Nom_Department VARCHAR2(30) PRIMARY KEY, 
First_Name VARCHAR2(20),
Last_Name VARCHAR2(250),
Num_empleats NUMBER(3));

a) Crea una funció que a partir d'un número de departament ens retorni el manager_id. En cas de que no existeixi el número de departament utilitza el procediment RAISE_APPLICATION_ERROR per generar una excepció amb el codi: -20215 i missatge: 'No existeix aquest departament!!'.

b) En un bloc PL/SQL crea un cursor que recuperi tots els empleats ordenats per departament i recorre'l per omplir la taula CAPS convenientment.



2.- Fes un bloc PL/SQL que crei una taula indexada per job_title i crea un cursor que recuperi tots els empleats ordenats per departament i recorre'l per omplir la taula amb la següent informació: número d'empleats que tenen aquest ofici i el número de departaments que tenen aquest ofici. Mostra el resultat.

3.- Utilitzant dos cursors, un que recuperi els departaments i un segon parametritzat que a partir d'un department_id recupera els empleats, fes el següent informe:


                     - EMPLEATS PER DEPARTAMENT -

Departament: <nom del departament>

Cap: <nom i cognom del cap del departament>

Empleats 

<nom i cognom dels empleats>

- - - - - - - - - - - - - - - - - - - - 

Departament: <nom del departament>

Cap: <nom i cognom del cap del departament>

Empleats 

<nom i cognom dels empleats>

Esquema SCOTT ampliat