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

De wikiserver
Dreceres ràpides: navegació, cerca
(Exercicis OnLine – Prova PL/SQL)
Línia 44: Línia 44:
 
</pre>
 
</pre>
  
2. Pel bloc PL/SQL utilitzi els procediments del paquet per generar l'informe. Utilitzeu un cursor que recuperi el IDCATEGORIA I NOMBRECATEGORIA de la taula CATEGORIAS.
+
1.7. Pel bloc PL/SQL utilitzi els procediments del paquet per generar l'informe. Utilitzeu un cursor que recuperi el IDCATEGORIA I NOMBRECATEGORIA de la taula CATEGORIAS.
  
 
L'informe tindrà el següent aspecte:
 
L'informe tindrà el següent aspecte:
Línia 72: Línia 72:
  
 
2. Fes un trigguer per actualitzar la taula ENVIOS.
 
2. Fes un trigguer per actualitzar la taula ENVIOS.
 +
(2,5 punts)
  
 
- Executa el script envios.sql*. El script crea la taula ENVIOS amb els següents camps:
 
- Executa el script envios.sql*. El script crea la taula ENVIOS amb els següents camps:
Línia 91: Línia 92:
  
 
3. Fes un bloc anònim per actualitzar el PRECIOUNIDAD dels productes dels proveïdors d'un determinat país, segons el següent criteri:
 
3. Fes un bloc anònim per actualitzar el PRECIOUNIDAD dels productes dels proveïdors d'un determinat país, segons el següent criteri:
 +
(2,5 punts)
  
 
:*Producte suspès: No cal actualitzar.
 
:*Producte suspès: No cal actualitzar.
Línia 102: Línia 104:
  
 
'''* Pots crear les funcions i procediments que estimis oportuns.'''
 
'''* Pots crear les funcions i procediments que estimis oportuns.'''
 
  
  
 
:::'''FEU EN TOTS ELS EXERCICIS UN JOC DE PROVES ADIENT'''
 
:::'''FEU EN TOTS ELS EXERCICIS UN JOC DE PROVES ADIENT'''

Revisió del 15:09, 12 juny 2020

Exercicis OnLine – Prova PL/SQL

Un cop acabada aquesta part de la prova pengeu un document (PL_SQL_Nom_i_PrimerCognom) en l’apartat respectiu:

PL/SQL

Fes un bloc PL/SQL anònim, que presenti un informe sobre la facturació per categories de productes (veure final del document).

1. Crea un paquet que contingui: (5 punts)

1.1. La declaració de la constant quantitat (en el ex. quantitat = 5000).

1.2. Una taula de registres indexada pel nom de cada categoria que contindrà en cada registre el total facturat d’aquella categoria, el nom del producte que més s'ha facturat, el total facturat per a aquest producte, el nombre de productes dels que s'ha facturat més d'una determinada quantitat i dels que s'ha facturat menys que aquesta mateixa quantitat.

1.3. Un procediment privat que inicialitzi la taula amb totes les categories i les facturacions a 0. Utilitzeu un cursor que recuperi el NOMBRECATEGORIA de la taula CATEGORIAS per conèixer les categories de productes actuals.

1.4 Un procediment que rebi com a paràmetre el NOMBRECATEGORIA, obtingui les dades respectives a tots els productes d’aquesta categoria i actualitzi convenientment la taula. En cas de que no existeixi generarà l’excepció am el codi: -20011 i el missatge: 'No existeix cap categoria amb aquest nom'. Utilitza un cursor per recuperar les dades de facturació dels productes de la categoria de les taules PEDIDOS i DETALLES_PEDIDOS.

1.5. Un procediment que recorrerà la taula de registres i mostrarà per pantalla un informe com el mostra't al final d'aquesta pàgina(*).

1.6. Quan es faci referencia per primera vegada al paquet s’inicialitzarà amb l’execució del procediment privat.

(*) exemple de recorregut d’una matriu associativa indexada per varchar2:

declare
  type t_vector is table of number(3) index by varchar2(10);
  v_vector t_vector;
  subind varchar2(10);
begin
  v_vector('Cuarenta') := 40;
  v_vector('cuarenta') := -40;
  v_vector('Cinco') := 5;
  v_vector('Quince') := 15;

  dbms_output.put_line('count: '|| v_vector.count);

  subind := v_vector.first;
  while subind is not NULL loop
    dbms_output.put_line(subind ||': '|| v_vector(subind));
    subind := v_vector.next(subind);
  end loop;
end;

1.7. Pel bloc PL/SQL utilitzi els procediments del paquet per generar l'informe. Utilitzeu un cursor que recuperi el IDCATEGORIA I NOMBRECATEGORIA de la taula CATEGORIAS.

L'informe tindrà el següent aspecte:

                     INFORME FACTURACIÓ PER CATEGORIES         

===== Bebidas===== 

 Total facturat : 194306
 Nom producte més facturació: Vino Côte de Blaye
 Facturat producte: 93279
 Productes que han facturat més de 5000$ : 10
 Productes que han facturat menys de 5000$ : 2

===== Carnes===== 

 Total facturat : 128406
 Nom producte més facturació: Salchicha Thüringer
 Facturat producte: 69322
 Productes que han facturat més de 5000$ : 5
 Productes que han facturat menys de 5000$ : 1

...

**Podeu suposar que no hi ha dos productes amb la mateixa facturació.

2. Fes un trigguer per actualitzar la taula ENVIOS. (2,5 punts)

- Executa el script envios.sql*. El script crea la taula ENVIOS amb els següents camps:

  • Companyia: Nom de la companyia d'enviament.
  • Pais: País de destinació de l'enviament.
  • Num_vegades: Nombre de vegades que s'ha enviat una comanda a aquest país mitjançant aquesta companyia.

- El triguer ha d'actualitzar la taula ENVIOS convenientment. Ha de tenir en compte tots els cassos possibles.

  • script envios.sql
CREATE TABLE envios AS
SELECT c.nombrecompanyia companyia, p.paisdestinatario pais, count(idpedido) num_vegades
FROM companyias_envios c join  pedidos p on c.idcompanyia envios = p.formaenvio
GROUP BY c.nombrecompanyia, p.paisdestinatario
ORDER BY c.nombrecompanyia;

3. Fes un bloc anònim per actualitzar el PRECIOUNIDAD dels productes dels proveïdors d'un determinat país, segons el següent criteri: (2,5 punts)

  • Producte suspès: No cal actualitzar.
  • Producte amb PRECIOUNIDAD de menys de 20 € : 5% .
  • Producte amb PRECIOUNIDAD entre 20 € i 40 € : 10% .
  • Producte amb PRECIOUNIDAD de més de 40 € : 15% .

- Cal emprar un cursor per actualitzar els productes de la categoria que bloquegi les files.

- Has d'obtenir un llistat amb totes les categories que han tingut algun producte amb algun canvi de preu i el total de l'augment de preu dels seus productes.

* Pots crear les funcions i procediments que estimis oportuns.


FEU EN TOTS ELS EXERCICIS UN JOC DE PROVES ADIENT