Diferència entre revisions de la pàgina «M2 - Bases de dades / Practiques UF3 : PL-SQL»
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/ | + | 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"| | + | ! align="left" width="100 px" style="background:Lavender; color:Black"|data |
− | ! align="left" width="100 px" style="background:Lavender; color:Black"| | + | ! align="left" width="100 px" style="background:Lavender; color:Black"|dia |
− | ! align="left" width="120 px" style="background:Lavender; color:Black"| | + | ! align="left" width="120 px" style="background:Lavender; color:Black"|dia_setmana |
− | ! align="left" width="85 px" style="background:Lavender; color:Black"| | + | ! align="left" width="85 px" style="background:Lavender; color:Black"|mes |
− | ! align="left" width="85 px" style="background:Lavender; color:Black"| | + | ! align="left" width="85 px" style="background:Lavender; color:Black"|trimestre |
− | ! align="left" width="85 px" style="background:Lavender; color:Black"| | + | ! align="left" width="85 px" style="background:Lavender; color:Black"|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 | ||
|} | |} |
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 |