Diferència entre revisions de la pàgina «M2 - Bases de dades / Practiques UF3 : PL-SQL»
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 |