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.
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.
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
- Creando Bases de Datos y Tablas
- Insertando Datos
- Consultando Datos
- Actualizando Datos
- Eliminando Datos
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
- Optimización de Consultas
- Estrategias de Indexación
- Análisis del Rendimiento de Consultas
- Vacuuming y Mantenimiento
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
- PostGIS para Datos Geoespaciales
- Búsqueda de Texto Completo
- Wrappers de Datos Externos
- PL/pgSQL y Otros Lenguajes Procedurales
