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 NUMBERCREATE OR REPLACE FUNCTIONes la cláusula para crear o reemplazar una función existente.calculate_circle_areaes el nombre de la función.(radius IN NUMBER)es el parámetro de entrada de tipoNUMBER.RETURN NUMBERespecifica que la función devolverá un valor de tipoNUMBER.
-
Declaración de Variables Locales:
area NUMBER;areaes una variable local que almacenará el resultado del cálculo.
-
Cuerpo de la Función:
BEGIN ... ENDarea := 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
