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_factorialamb un paràmetre d'entradande tipusNUMBER.RETURN NUMBER: Especifica que la funció retorna un valor de tipusNUMBER.resultat NUMBER := 1;: Declara una variable localresultatinicialitzada a 1.FOR i IN 1..n LOOP: Un bucleFORque itera des de 1 fins an.resultat := resultat * i;: Multiplicaresultatpel valor deien 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
