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

De wikiserver
Dreceres ràpides: navegació, cerca
Línia 53: Línia 53:
 
3.- Crea un procediment emmagatzemat PL/SQL que rebi com a paràmetres un rang de dates i afegeixi en la taula TEMPS un registre per cada dia comprès entre aquestes dates. Per exemple:
 
3.- Crea un procediment emmagatzemat PL/SQL que rebi com a paràmetres un rang de dates i afegeixi en la taula TEMPS un registre per cada dia comprès entre aquestes dates. Per exemple:
  
EXECUTE  afegir_temps('01/01/2017', '10/01/2017');
+
EXECUTE  afegir_temps('01/01/2019', '10/01/2019');
  
 
Per realitzar el procediment sol·licitat en el punt 3, has d'emprar la següent funció, que a partir d'una data et retorna el dia següent a aquesta data.
 
Per realitzar el procediment sol·licitat en el punt 3, has d'emprar la següent funció, que a partir d'una data et retorna el dia següent a aquesta data.
Línia 69: Línia 69:
  
 
{|border="2" cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;"
 
{|border="2" cellpadding="4" cellspacing="0" style="margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; font-size: 95%;"
! align="left" width="100 px" style="background:Lavender; color:Black"|Title
+
! align="left" width="100 px" style="background:Lavender; color:Black"|data
! align="left" width="100 px" style="background:Lavender; color:Black"|Copy_number
+
! align="left" width="100 px" style="background:Lavender; color:Black"|dia
! align="left" width="120 px" style="background:Lavender; color:Black"|Customer
+
! align="left" width="120 px" style="background:Lavender; color:Black"|dia_setmana
! align="left" width="85 px" style="background:Lavender; color:Black"|Book_Date
+
! align="left" width="85 px" style="background:Lavender; color:Black"|mes
! align="left" width="85 px" style="background:Lavender; color:Black"|Date_return_expected
+
! align="left" width="85 px" style="background:Lavender; color:Black"|trimestre
! align="left" width="85 px" style="background:Lavender; color:Black"|Date_returned
+
! align="left" width="85 px" style="background:Lavender; color:Black"|any
 
|-
 
|-
|92 ||1 ||101 ||3 days ago ||1 day ago ||2 days ago
+
|01/01/2019 ||1 ||Dimarts ||Gener ||T1 ||2019
 
|-
 
|-
|93 ||2 ||101 ||1 day ago ||1 day form now ||
+
|01/01/2019 ||2 ||Dimecres ||Gener ||T1 ||2019
 
|-
 
|-
|95 ||3 ||102 ||2 days ago ||Today ||
+
|01/01/2019 ||3 ||Dijous ||Gener ||T1 ||2019
 
|-
 
|-
|97 ||1 ||106 ||4 days ago ||2 days ago ||2 days ago
+
|01/01/2019 ||4 ||Divendres ||Gener ||T1 ||2019
 +
|-
 +
|01/01/2019 ||5 ||Dissabte ||Gener ||T1 ||2019
 +
|-
 +
|01/01/2019 ||6 ||Diumenge ||Gener ||T1 ||2019
 +
|-
 +
|01/01/2019 ||7 ||Dilluns ||Gener ||T1 ||2019
 +
|-
 +
|01/01/2019 ||8 ||Dimarts ||Gener ||T1 ||2019
 +
|-
 +
|01/01/2019 ||9 ||Dimecres ||Gener ||T1 ||2019
 +
|-
 +
|01/01/2019 ||10 ||Dijous ||Gener ||T1 ||2019
 
|}
 
|}

Revisió del 12:47, 6 abr 2021

Pràctica PL/SQL Cal lliurar un fitxer (.sql) amb totes les comandes SQL emprades i tot el codi PL/SQL, degudament comentat.


Data màxima lliurament: 30/04/2021

Especificació

Per a la implementació d'una base de dades que suporti anàlisi multidimensional és desitja crear una taula que emmagatzemi les diferents característiques referides a una data; això és: dia, dia de la setmana,mes, any, trimestre... L'esquema relacional d'aquesta taula seria els següent:

TEMPS (data, dia, dia_setmana, mes, trimestre, any)

1.- Crea la taula TEMPS en la base de dades atenent a l'esquema relacional anterior; considerant l'atribut data com a clau principal. La resta dels atributs no admeten valors nuls.

2.- Crea una funció PL/SQL que donat un nombre enter obtingui en format text el corresponent mes. Per exemple:

EXECUTE convertir_mes(1) → Gener

3.- Crea un procediment emmagatzemat PL/SQL que rebi com a paràmetres un rang de dates i afegeixi en la taula TEMPS un registre per cada dia comprès entre aquestes dates. Per exemple:

EXECUTE afegir_temps('01/01/2019', '10/01/2019');

Per realitzar el procediment sol·licitat en el punt 3, has d'emprar la següent funció, que a partir d'una data et retorna el dia següent a aquesta data.

CREATE OR REPLACE FUNCTION dia_seguent (p_data_actual DATE) 
RETURN DATE IS
BEGIN
	RETURN TO_DATE(TO_CHAR(p_data_actual + 1));
END;

Desprès de cridar al procediment «afegir_temps» de l'exemple anterior, la taula TEMPS hauria de contenir la següent informació:


data dia dia_setmana mes trimestre any
01/01/2019 1 Dimarts Gener T1 2019
01/01/2019 2 Dimecres Gener T1 2019
01/01/2019 3 Dijous Gener T1 2019
01/01/2019 4 Divendres Gener T1 2019
01/01/2019 5 Dissabte Gener T1 2019
01/01/2019 6 Diumenge Gener T1 2019
01/01/2019 7 Dilluns Gener T1 2019
01/01/2019 8 Dimarts Gener T1 2019
01/01/2019 9 Dimecres Gener T1 2019
01/01/2019 10 Dijous Gener T1 2019