En este módulo, aprenderemos sobre los procedimientos y funciones almacenadas en PostgreSQL. Estas herramientas son fundamentales para la creación de lógica de negocio en la base de datos, permitiendo la ejecución de operaciones complejas de manera eficiente y reutilizable.

¿Qué son los Procedimientos y Funciones Almacenadas?

Procedimientos Almacenados

Un procedimiento almacenado es un conjunto de instrucciones SQL que se almacenan en la base de datos y se pueden ejecutar cuando sea necesario. Los procedimientos almacenados pueden aceptar parámetros de entrada y salida, y pueden realizar operaciones como insertar, actualizar, eliminar y consultar datos.

Funciones Almacenadas

Las funciones almacenadas son similares a los procedimientos almacenados, pero están diseñadas para devolver un valor. Las funciones pueden ser utilizadas en consultas SQL como si fueran columnas o expresiones.

Creación de Procedimientos Almacenados

Sintaxis Básica

CREATE PROCEDURE nombre_procedimiento (parámetros)
LANGUAGE plpgsql
AS $$
BEGIN
    -- Cuerpo del procedimiento
END;
$$;

Ejemplo Práctico

Vamos a crear un procedimiento almacenado que inserta un nuevo registro en una tabla de empleados.

CREATE PROCEDURE insertar_empleado(
    nombre VARCHAR,
    apellido VARCHAR,
    salario NUMERIC
)
LANGUAGE plpgsql
AS $$
BEGIN
    INSERT INTO empleados (nombre, apellido, salario)
    VALUES (nombre, apellido, salario);
END;
$$;

Ejecución del Procedimiento

Para ejecutar el procedimiento almacenado, utilizamos la instrucción CALL.

CALL insertar_empleado('Juan', 'Pérez', 50000);

Creación de Funciones Almacenadas

Sintaxis Básica

CREATE FUNCTION nombre_funcion (parámetros)
RETURNS tipo_de_dato
LANGUAGE plpgsql
AS $$
BEGIN
    -- Cuerpo de la función
    RETURN valor;
END;
$$;

Ejemplo Práctico

Vamos a crear una función almacenada que calcula el salario anual de un empleado.

CREATE FUNCTION calcular_salario_anual(salario_mensual NUMERIC)
RETURNS NUMERIC
LANGUAGE plpgsql
AS $$
BEGIN
    RETURN salario_mensual * 12;
END;
$$;

Uso de la Función en una Consulta

Podemos utilizar la función en una consulta SQL como si fuera una columna.

SELECT nombre, apellido, calcular_salario_anual(salario) AS salario_anual
FROM empleados;

Ejercicios Prácticos

Ejercicio 1: Crear un Procedimiento Almacenado

Crea un procedimiento almacenado llamado actualizar_salario que actualice el salario de un empleado basado en su ID.

CREATE PROCEDURE actualizar_salario(
    id_empleado INT,
    nuevo_salario NUMERIC
)
LANGUAGE plpgsql
AS $$
BEGIN
    UPDATE empleados
    SET salario = nuevo_salario
    WHERE id = id_empleado;
END;
$$;

Ejercicio 2: Crear una Función Almacenada

Crea una función almacenada llamada obtener_empleado que devuelva el nombre completo de un empleado basado en su ID.

CREATE FUNCTION obtener_empleado(id_empleado INT)
RETURNS VARCHAR
LANGUAGE plpgsql
AS $$
DECLARE
    nombre_completo VARCHAR;
BEGIN
    SELECT nombre || ' ' || apellido INTO nombre_completo
    FROM empleados
    WHERE id = id_empleado;
    RETURN nombre_completo;
END;
$$;

Soluciones

Solución al Ejercicio 1

CREATE PROCEDURE actualizar_salario(
    id_empleado INT,
    nuevo_salario NUMERIC
)
LANGUAGE plpgsql
AS $$
BEGIN
    UPDATE empleados
    SET salario = nuevo_salario
    WHERE id = id_empleado;
END;
$$;

Solución al Ejercicio 2

CREATE FUNCTION obtener_empleado(id_empleado INT)
RETURNS VARCHAR
LANGUAGE plpgsql
AS $$
DECLARE
    nombre_completo VARCHAR;
BEGIN
    SELECT nombre || ' ' || apellido INTO nombre_completo
    FROM empleados
    WHERE id = id_empleado;
    RETURN nombre_completo;
END;
$$;

Conclusión

En esta sección, hemos aprendido sobre los procedimientos y funciones almacenadas en PostgreSQL. Estas herramientas nos permiten encapsular lógica de negocio en la base de datos, facilitando la reutilización y el mantenimiento del código. Hemos visto cómo crear y ejecutar procedimientos y funciones almacenadas, y hemos practicado con algunos ejercicios. En el próximo módulo, exploraremos las transacciones y la concurrencia en PostgreSQL.

Curso de PostgreSQL

Módulo 1: Introducción a PostgreSQL

Módulo 2: Operaciones Básicas de SQL

Módulo 3: Consultas Avanzadas de SQL

Módulo 4: Diseño de Bases de Datos y Normalización

Módulo 5: Características Avanzadas de PostgreSQL

Módulo 6: Ajuste de Rendimiento y Optimización

Módulo 7: Seguridad y Gestión de Usuarios

Módulo 8: Trabajando con JSON y Características NoSQL

Módulo 9: Extensiones y Herramientas Avanzadas

Módulo 10: Estudios de Caso y Aplicaciones del Mundo Real

© Copyright 2024. Todos los derechos reservados