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 1: Línia 1:
 
'''Esquema HR'''
 
'''Esquema HR'''
  
1.- Crea una taula CAPS (CREATE TABLE) que contingui els següent camps: Nom_Department, First_Name, Last_Name i Num_empleats.  
+
1.- Crea una taula PRESSUPOST (CREATE TABLE) que contingui els següent camps: Nom_Department, First_Name, Last_Name del manager i Total_Salaris.  
 
<pre>
 
<pre>
CREATE TABLE CAPS(
+
CREATE TABLE PRESSUPOST(
 
Nom_Department VARCHAR2(30) PRIMARY KEY,  
 
Nom_Department VARCHAR2(30) PRIMARY KEY,  
 
First_Name VARCHAR2(20),
 
First_Name VARCHAR2(20),
 
Last_Name VARCHAR2(250),
 
Last_Name VARCHAR2(250),
Num_empleats NUMBER(3));
+
Total_Salaris NUMBER(5));
 
</pre>
 
</pre>
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!!'.
+
a) Crea una funció que a partir d'un número de departament ens retorni el total de salaris pressupostats per a aquell departament, tenint en compte els següents augments:
 +
<pre>
 +
3%: AD_ASST, SA_REP, SH_CLERK, PU_CLERK, ST_CLERK
 +
5%: AC_ACCOUNT, FI_ACCOUNT, HR_REP, PR_REP, IT_PROG, MK_REP
 +
7%: MK_MAN, AC_MGR, FI_MGR, PU_MAN, SA_MAN, ST_MANAGER
 +
9%: AD_PRES, AD_VP
 +
</pre>
 +
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!!'.
 
<!--
 
<!--
 
<pre>
 
<pre>
Línia 18: Línia 25:
 
BEGIN
 
BEGIN
 
   SELECT manager_id
 
   SELECT manager_id
   INTO v_manager
+
   INTO v_manager         cursor!!!!
 
   FROM departments
 
   FROM departments
 
   WHERE department_id = p_dept;
 
   WHERE department_id = p_dept;
Línia 29: Línia 36:
 
-->
 
-->
  
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 departaments que tenen empleats (manager_id not null) ordenats per departament i utilitza la funció de l'apartat a) per omplir la taula PRESSUPOST convenientment.
 
<!--
 
<!--
 
DECLARE
 
DECLARE

Revisió del 14:07, 19 març 2019

Esquema HR

1.- Crea una taula PRESSUPOST (CREATE TABLE) que contingui els següent camps: Nom_Department, First_Name, Last_Name del manager i Total_Salaris.

CREATE TABLE PRESSUPOST(
Nom_Department VARCHAR2(30) PRIMARY KEY, 
First_Name VARCHAR2(20),
Last_Name VARCHAR2(250),
Total_Salaris NUMBER(5));

a) Crea una funció que a partir d'un número de departament ens retorni el total de salaris pressupostats per a aquell departament, tenint en compte els següents augments:

3%: AD_ASST, SA_REP, SH_CLERK, PU_CLERK, ST_CLERK
5%: AC_ACCOUNT, FI_ACCOUNT, HR_REP, PR_REP, IT_PROG, MK_REP
7%: MK_MAN, AC_MGR, FI_MGR, PU_MAN, SA_MAN, ST_MANAGER
9%: AD_PRES, AD_VP 

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 departaments que tenen empleats (manager_id not null) ordenats per departament i utilitza la funció de l'apartat a) per omplir la taula PRESSUPOST 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