Introducción
Los procedimientos almacenados son subprogramas que se almacenan en la base de datos y se pueden ejecutar en cualquier momento. Son útiles para encapsular lógica de negocio, mejorar el rendimiento y la reutilización del código.
¿Qué es un Procedimiento Almacenado?
Un procedimiento almacenado es un conjunto de sentencias SQL y PL/SQL que se almacenan en la base de datos y se pueden ejecutar como una unidad. Los procedimientos almacenados pueden aceptar parámetros de entrada y salida, y pueden devolver valores.
Ventajas de los Procedimientos Almacenados
- Reutilización del Código: Los procedimientos almacenados pueden ser llamados desde múltiples aplicaciones.
- Seguridad: Permiten controlar el acceso a los datos mediante la encapsulación de la lógica de negocio.
- Rendimiento: Reducen el tráfico de red y mejoran el rendimiento al ejecutar lógica en el servidor de la base de datos.
- Mantenimiento: Facilitan el mantenimiento y la actualización del código.
Sintaxis Básica
La sintaxis básica para crear un procedimiento almacenado en PL/SQL es la siguiente:
CREATE OR REPLACE PROCEDURE procedure_name (
parameter1 IN datatype,
parameter2 OUT datatype
) IS
-- Declaración de variables
BEGIN
-- Cuerpo del procedimiento
-- Sentencias SQL y PL/SQL
EXCEPTION
-- Manejo de excepciones
END procedure_name;Ejemplo Práctico
Vamos a crear un procedimiento almacenado simple que inserta un registro en una tabla de empleados.
Paso 1: Crear la Tabla de Empleados
CREATE TABLE employees (
employee_id NUMBER PRIMARY KEY,
first_name VARCHAR2(50),
last_name VARCHAR2(50),
hire_date DATE
);Paso 2: Crear el Procedimiento Almacenado
CREATE OR REPLACE PROCEDURE add_employee (
p_employee_id IN NUMBER,
p_first_name IN VARCHAR2,
p_last_name IN VARCHAR2,
p_hire_date IN DATE
) IS
BEGIN
INSERT INTO employees (employee_id, first_name, last_name, hire_date)
VALUES (p_employee_id, p_first_name, p_last_name, p_hire_date);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM);
END add_employee;Explicación del Código
- CREATE OR REPLACE PROCEDURE: Crea un nuevo procedimiento o reemplaza uno existente con el mismo nombre.
- add_employee: Nombre del procedimiento.
- Parámetros:
p_employee_id,p_first_name,p_last_name,p_hire_dateson los parámetros de entrada. - BEGIN...END: Delimita el cuerpo del procedimiento.
- INSERT INTO: Sentencia SQL que inserta un nuevo registro en la tabla
employees. - EXCEPTION: Manejo de excepciones para capturar y mostrar errores.
Ejecución del Procedimiento
Para ejecutar el procedimiento almacenado, utilizamos la sentencia EXECUTE o CALL:
Ejercicio Práctico
Ejercicio 1: Crear un Procedimiento para Actualizar Registros
Crea un procedimiento almacenado llamado update_employee que actualice el nombre y apellido de un empleado basado en su employee_id.
Solución
CREATE OR REPLACE PROCEDURE update_employee (
p_employee_id IN NUMBER,
p_first_name IN VARCHAR2,
p_last_name IN VARCHAR2
) IS
BEGIN
UPDATE employees
SET first_name = p_first_name, last_name = p_last_name
WHERE employee_id = p_employee_id;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM);
END update_employee;Ejercicio 2: Crear un Procedimiento para Eliminar Registros
Crea un procedimiento almacenado llamado delete_employee que elimine un registro de la tabla employees basado en su employee_id.
Solución
CREATE OR REPLACE PROCEDURE delete_employee (
p_employee_id IN NUMBER
) IS
BEGIN
DELETE FROM employees
WHERE employee_id = p_employee_id;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM);
END delete_employee;Resumen
En esta sección, hemos aprendido sobre los procedimientos almacenados en PL/SQL, su sintaxis básica y cómo crearlos y ejecutarlos. También hemos visto ejemplos prácticos y ejercicios para reforzar los conceptos aprendidos. Los procedimientos almacenados son una herramienta poderosa para encapsular lógica de negocio y mejorar el rendimiento y la seguridad de nuestras aplicaciones.
En el próximo tema, exploraremos las funciones en PL/SQL, que son similares a los procedimientos almacenados pero con algunas diferencias clave.
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
