Les funcions en PL/SQL són subprogrames que encapsulen un conjunt d'instruccions que realitzen una tasca específica i retornen un valor. Les funcions són molt útils per modularitzar el codi, millorar la seva llegibilitat i reutilitzar-lo en diferents parts del programa.
Continguts
Definició de funcions
Una funció és un subprograma que:
- Realitza una tasca específica.
- Retorna un valor únic.
- Pot acceptar paràmetres d'entrada.
Les funcions es poden utilitzar en expressions SQL, PL/SQL i en altres funcions o procediments.
Sintaxi de les funcions
La sintaxi bàsica per crear una funció en PL/SQL és la següent:
CREATE [OR REPLACE] FUNCTION nom_funció (paràmetre1 tipus1, paràmetre2 tipus2, ...) RETURN tipus_retorn IS -- Declaracions locals BEGIN -- Cos de la funció RETURN valor_retorn; EXCEPTION -- Gestió d'excepcions END nom_funció;
Components de la sintaxi
CREATE [OR REPLACE] FUNCTION
: Inicia la definició de la funció.OR REPLACE
és opcional i s'utilitza per substituir una funció existent.nom_funció
: Nom de la funció.paràmetre1 tipus1, paràmetre2 tipus2, ...
: Llista de paràmetres d'entrada amb els seus tipus de dades.RETURN tipus_retorn
: Especifica el tipus de dades del valor que retorna la funció.IS
: Inicia la secció de declaracions locals.BEGIN
: Inicia el cos de la funció.RETURN valor_retorn
: Retorna el valor de la funció.EXCEPTION
: Inicia la secció de gestió d'excepcions (opcional).END nom_funció;
: Finalitza la definició de la funció.
Exemple pràctic
A continuació, es mostra un exemple pràctic d'una funció que calcula el factorial d'un nombre:
CREATE OR REPLACE FUNCTION calcular_factorial (n NUMBER) RETURN NUMBER IS resultat NUMBER := 1; BEGIN FOR i IN 1..n LOOP resultat := resultat * i; END LOOP; RETURN resultat; EXCEPTION WHEN OTHERS THEN RETURN NULL; END calcular_factorial;
Explicació del codi
calcular_factorial (n NUMBER)
: Defineix la funciócalcular_factorial
amb un paràmetre d'entradan
de tipusNUMBER
.RETURN NUMBER
: Especifica que la funció retorna un valor de tipusNUMBER
.resultat NUMBER := 1;
: Declara una variable localresultat
inicialitzada a 1.FOR i IN 1..n LOOP
: Un bucleFOR
que itera des de 1 fins an
.resultat := resultat * i;
: Multiplicaresultat
pel valor dei
en cada iteració.RETURN resultat;
: Retorna el valor deresultat
.WHEN OTHERS THEN RETURN NULL;
: Captura qualsevol excepció i retornaNULL
.
Exercicis pràctics
Exercici 1
Crea una funció que calculi la suma dels primers n
nombres naturals.
Solució
CREATE OR REPLACE FUNCTION suma_nombres (n NUMBER) RETURN NUMBER IS suma NUMBER := 0; BEGIN FOR i IN 1..n LOOP suma := suma + i; END LOOP; RETURN suma; EXCEPTION WHEN OTHERS THEN RETURN NULL; END suma_nombres;
Exercici 2
Crea una funció que determini si un nombre és primer.
Solució
CREATE OR REPLACE FUNCTION es_primer (n NUMBER) RETURN BOOLEAN IS i NUMBER; BEGIN IF n < 2 THEN RETURN FALSE; END IF; FOR i IN 2..FLOOR(SQRT(n)) LOOP IF n MOD i = 0 THEN RETURN FALSE; END IF; END LOOP; RETURN TRUE; EXCEPTION WHEN OTHERS THEN RETURN FALSE; END es_primer;
Errors comuns i consells
- Oblidar el
RETURN
: Assegura't que la funció sempre retorna un valor del tipus especificat. - Tipus de dades incorrectes: Verifica que els tipus de dades dels paràmetres i el valor de retorn siguin correctes.
- Gestió d'excepcions: Inclou una secció de gestió d'excepcions per manejar errors inesperats.
Conclusió
Les funcions en PL/SQL són eines poderoses per modularitzar i reutilitzar el codi. Hem après la sintaxi bàsica per crear funcions, hem vist un exemple pràctic i hem practicat amb exercicis. En el proper tema, explorarem els paquets, que ens permetran agrupar funcions i procediments relacionats en unitats lògiques.
Curs de PL/SQL
Mòdul 1: Introducció a PL/SQL
Mòdul 2: Fonaments de PL/SQL
- Estructura del bloc PL/SQL
- Variables i tipus de dades
- Estructures de control
- Cursors
- Gestió d'excepcions