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
 
