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'entrada n de tipus NUMBER.
  • RETURN NUMBER: Especifica que la funció retorna un valor de tipus NUMBER.
  • resultat NUMBER := 1;: Declara una variable local resultat inicialitzada a 1.
  • FOR i IN 1..n LOOP: Un bucle FOR que itera des de 1 fins a n.
  • resultat := resultat * i;: Multiplica resultat pel valor de i en cada iteració.
  • RETURN resultat;: Retorna el valor de resultat.
  • WHEN OTHERS THEN RETURN NULL;: Captura qualsevol excepció i retorna NULL.

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.

© Copyright 2024. Tots els drets reservats