Diferència entre revisions de la pàgina «M2 - Bases de dades / Practiques UF3 : PL-SQL»
Línia 45: | Línia 45: | ||
TEMPS (data, dia, dia_setmana, mes, trimestre, any) | 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. | ||
+ | |||
+ | <source lang="sql"> | ||
+ | CREATE OR REPLACE FUNCTION dia_seguent (p_data_actual DATE) | ||
+ | RETURN DATE IS | ||
+ | BEGIN | ||
+ | RETURN TO_DATE(TO_CHAR(p_data_actual + 1)); | ||
+ | END; | ||
+ | </source> |
Revisió del 12:37, 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;