Las funciones en PL/SQL son subprogramas que pueden aceptar parámetros, realizar una serie de operaciones y devolver un valor. Son muy útiles para encapsular lógica que se repite y para mejorar la modularidad y la legibilidad del código.

Conceptos Clave

  1. Definición de Función: Una función es un subprograma que devuelve un valor.
  2. Sintaxis de Función: La estructura básica de una función incluye la declaración, el cuerpo y la sección de excepciones.
  3. Parámetros de Función: Las funciones pueden aceptar parámetros de entrada, salida o ambos.
  4. Llamada a Función: Las funciones pueden ser llamadas desde otros bloques PL/SQL, procedimientos, funciones o directamente desde SQL.

Sintaxis Básica de una Función

CREATE [OR REPLACE] FUNCTION function_name 
   (parameter_1 datatype, parameter_2 datatype, ...)
RETURN return_datatype
IS | AS
   -- Declaración de variables locales
BEGIN
   -- Cuerpo de la función
   -- Lógica de la función
   RETURN return_value;
EXCEPTION
   -- Manejo de excepciones
END function_name;

Ejemplo Práctico

Vamos a crear una función simple que calcule el área de un círculo dado su radio.

CREATE OR REPLACE FUNCTION calculate_circle_area (
   radius IN NUMBER
) RETURN NUMBER
IS
   area NUMBER;
BEGIN
   -- Calcula el área del círculo
   area := 3.14159 * radius * radius;
   RETURN area;
EXCEPTION
   WHEN OTHERS THEN
      -- Manejo de excepciones
      RETURN NULL;
END calculate_circle_area;

Explicación del Código

  1. Declaración de la Función: CREATE OR REPLACE FUNCTION calculate_circle_area (radius IN NUMBER) RETURN NUMBER

    • CREATE OR REPLACE FUNCTION es la cláusula para crear o reemplazar una función existente.
    • calculate_circle_area es el nombre de la función.
    • (radius IN NUMBER) es el parámetro de entrada de tipo NUMBER.
    • RETURN NUMBER especifica que la función devolverá un valor de tipo NUMBER.
  2. Declaración de Variables Locales: area NUMBER;

    • area es una variable local que almacenará el resultado del cálculo.
  3. Cuerpo de la Función: BEGIN ... END

    • area := 3.14159 * radius * radius; realiza el cálculo del área del círculo.
    • RETURN area; devuelve el valor calculado.
  4. Manejo de Excepciones: EXCEPTION ...

    • WHEN OTHERS THEN RETURN NULL; maneja cualquier excepción que pueda ocurrir y devuelve NULL.

Llamada a la Función

Puedes llamar a la función calculate_circle_area desde un bloque PL/SQL o una sentencia SQL.

DECLARE
   radius NUMBER := 5;
   area NUMBER;
BEGIN
   area := calculate_circle_area(radius);
   DBMS_OUTPUT.PUT_LINE('El área del círculo es: ' || area);
END;

Ejercicio Práctico

Ejercicio 1: Crea una función llamada calculate_rectangle_area que acepte dos parámetros (longitud y ancho) y devuelva el área de un rectángulo.

CREATE OR REPLACE FUNCTION calculate_rectangle_area (
   length IN NUMBER,
   width IN NUMBER
) RETURN NUMBER
IS
   area NUMBER;
BEGIN
   area := length * width;
   RETURN area;
EXCEPTION
   WHEN OTHERS THEN
      RETURN NULL;
END calculate_rectangle_area;

Ejercicio 2: Crea una función llamada is_even que acepte un número entero y devuelva TRUE si el número es par y FALSE si es impar.

CREATE OR REPLACE FUNCTION is_even (
   number IN NUMBER
) RETURN BOOLEAN
IS
BEGIN
   IF MOD(number, 2) = 0 THEN
      RETURN TRUE;
   ELSE
      RETURN FALSE;
   END IF;
EXCEPTION
   WHEN OTHERS THEN
      RETURN FALSE;
END is_even;

Soluciones

Solución al Ejercicio 1:

CREATE OR REPLACE FUNCTION calculate_rectangle_area (
   length IN NUMBER,
   width IN NUMBER
) RETURN NUMBER
IS
   area NUMBER;
BEGIN
   area := length * width;
   RETURN area;
EXCEPTION
   WHEN OTHERS THEN
      RETURN NULL;
END calculate_rectangle_area;

Solución al Ejercicio 2:

CREATE OR REPLACE FUNCTION is_even (
   number IN NUMBER
) RETURN BOOLEAN
IS
BEGIN
   IF MOD(number, 2) = 0 THEN
      RETURN TRUE;
   ELSE
      RETURN FALSE;
   END IF;
EXCEPTION
   WHEN OTHERS THEN
      RETURN FALSE;
END is_even;

Resumen

En esta sección, hemos aprendido sobre las funciones en PL/SQL, su sintaxis básica, cómo definir y llamar funciones, y cómo manejar excepciones dentro de ellas. Las funciones son una herramienta poderosa para modularizar y reutilizar código en PL/SQL. En el siguiente tema, exploraremos los paquetes en PL/SQL, que nos permitirán agrupar funciones y procedimientos relacionados en un solo módulo.

© Copyright 2024. Todos los derechos reservados