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
- Definición de Función: Una función es un subprograma que devuelve un valor.
- Sintaxis de Función: La estructura básica de una función incluye la declaración, el cuerpo y la sección de excepciones.
- Parámetros de Función: Las funciones pueden aceptar parámetros de entrada, salida o ambos.
- 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
-
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 tipoNUMBER
.RETURN NUMBER
especifica que la función devolverá un valor de tipoNUMBER
.
-
Declaración de Variables Locales:
area NUMBER;
area
es una variable local que almacenará el resultado del cálculo.
-
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.
-
Manejo de Excepciones:
EXCEPTION ...
WHEN OTHERS THEN RETURN NULL;
maneja cualquier excepción que pueda ocurrir y devuelveNULL
.
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.
Curso de PL/SQL
Módulo 1: Introducción a PL/SQL
Módulo 2: Fundamentos de PL/SQL
- Estructura del Bloque PL/SQL
- Variables y Tipos de Datos
- Estructuras de Control
- Cursores
- Manejo de Excepciones