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 66: Línia 66:
  
 
Desprès de cridar al procediment «afegir_temps» de l'exemple anterior, la taula TEMPS hauria de contenir la següent informació:
 
Desprès de cridar al procediment «afegir_temps» de l'exemple anterior, la taula TEMPS hauria de contenir la següent informació:
 +
 +
 +
{|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"|Copy_number
 +
! align="left" width="120 px" style="background:Lavender; color:Black"|Customer
 +
! align="left" width="85 px" style="background:Lavender; color:Black"|Book_Date
 +
! align="left" width="85 px" style="background:Lavender; color:Black"|Date_return_expected
 +
! align="left" width="85 px" style="background:Lavender; color:Black"|Date_returned
 +
|-
 +
|92 ||1 ||101 ||3 days ago ||1 day ago ||2 days ago
 +
|-
 +
|93 ||2 ||101 ||1 day ago ||1 day form now ||
 +
|-
 +
|95 ||3 ||102 ||2 days ago ||Today ||
 +
|-
 +
|97 ||1 ||106 ||4 days ago ||2 days ago ||2 days ago
 +
|}

Revisió del 12:40, 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/2017', '10/01/2017');

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ó:


Title Copy_number Customer Book_Date Date_return_expected Date_returned
92 1 101 3 days ago 1 day ago 2 days ago
93 2 101 1 day ago 1 day form now
95 3 102 2 days ago Today
97 1 106 4 days ago 2 days ago 2 days ago