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_date son 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:

EXECUTE add_employee(1, 'John', 'Doe', SYSDATE);

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.

© Copyright 2024. Todos los derechos reservados