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