Ir al contenido principal

Procedimientos y Funciones en SQL

 Procedimientos y Funciones en SQL 

Procedimientos y Funciones en SQL




Introducción

Los procedimientos almacenados y las funciones son componentes fundamentales en la gestión de bases de datos. Estos elementos permiten encapsular consultas y operaciones complejas, mejorando el rendimiento, la seguridad y la organización del código.

Objetivo

Comprender en detalle los procedimientos almacenados y funciones en SQL, sus características, aplicaciones y cómo se utilizan en bases de datos Oracle.

Marco Teórico

Procedimientos Almacenados

Un procedimiento almacenado es un conjunto de instrucciones SQL que se almacena en el servidor y se ejecuta posteriormente para realizar tareas repetitivas sin necesidad de escribir el mismo código varias veces.

Características:

  • Se ejecutan con EXECUTE o CALL.
  • Aceptan parámetros de entrada y salida.
  • Son reutilizables en diferentes partes de una aplicación.
  • Se almacenan y compilan en el servidor, mejorando la eficiencia.
  • Pueden ejecutar múltiples consultas o transacciones.

Funciones

Las funciones son bloques de código SQL almacenados en el servidor, pero a diferencia de los procedimientos, siempre deben devolver un valor. Son útiles para cálculos o transformaciones en consultas.

Características:

  • Devuelven un valor (escalar o de tabla).
  • Pueden usarse en SELECTWHERE, etc.
  • Son más simples que los procedimientos almacenados.
  • Aceptan parámetros de entrada, pero no de salida.

APLICACION DE PROCEDIMIENTOS EN SQL

Los procedimientos se utilizan principalmente para encapsular una secuencia de operaciones SQL que deben ejecutarse de manera repetida, como la inserción de datos, la actualización o eliminación de registros, o la gestión de la seguridad y permisos.

Aplicación de Funciones en SQL

Las funciones se aplican cuando se requiere realizar cálculos, transformaciones o validaciones dentro de una consulta SQL. Se pueden usar directamente en la cláusula SELECT, WHERE, HAVING, etc.

Ventajas de los Procedimientos Almacenados

Rendimiento Mejorado: Al ser almacenados y precompilados en el servidor, los procedimientos pueden ejecutarse más rápidamente. Reutilización del Código: Permiten reutilizar código, lo que evita la duplicación de operaciones comunes. Seguridad: Mejor control de acceso, ya que los usuarios pueden ejecutar procedimientos sin tener acceso directo a las tablas subyacentes. Mantenimiento Centralizado: Los cambios en la lógica de negocio solo necesitan realizarse en el procedimiento, sin tener que modificar cada consulta o código que lo utiliza

Desventajas de los Procedimientos Almacenados

Dependencia del Servidor: El uso de procedimientos almacenados puede hacer que la base de datos y la lógica de negocio estén demasiado acopladas. Dificultad en la Depuración: Los procedimientos complejos pueden ser difíciles de depurar y mantener. Portabilidad Limitada: La sintaxis y el comportamiento de los procedimientos almacenados pueden variar entre diferentes sistemas de bases de datos.

Ventajas de las Funciones en SQL

Simplicidad: Son más fáciles de entender y usar en una sola consulta. Reutilización: Al igual que los procedimientos, las funciones también permiten reutilizar código dentro de una consulta. Integración con Consultas SQL: Se pueden utilizar directamente en SELECT, WHERE, ORDER BY, etc., lo que facilita la integración en consultas complejas.

Desventajas de las Funciones en SQL

Limitadas en Complejidad: Las funciones no pueden realizar operaciones como la modificación de datos en la base de datos, lo que limita su capacidad frente a procedimientos almacenados. Impacto en el Rendimiento: Si se usan incorrectamente o en exceso, las funciones pueden afectar negativamente al rendimiento de las consultas.

Procedimientos y Funciones SQL Procedimientos Almacenados Estructura CREATE PROCEDURE nombre_proc (param1 tipo, param2 tipo) BEGIN -- Instrucciones SQL END; Características Puede contener múltiples instrucciones No retorna valores (pero puede usar parámetros de salida: OUT, INOUT) Puede realizar operaciones DML (INSERT, UPDATE, DELETE) Funciones SQL Estructura CREATE FUNCTION nombre_func (param1 tipo, param2 tipo) RETURNS tipo_retorno BEGIN RETURN expresión; END; Características Debe retornar un valor Puede usarse en consultas SELECT Generalmente no puede realizar operaciones DML (depende del SGBD) Tiene que ser determinista

Ejemplos

Procedimientos y Funciones SQL Procedimientos Almacenados Estructura CREATE PROCEDURE nombre_proc (param1 tipo, param2 tipo) BEGIN -- Instrucciones SQL END; Características Puede contener múltiples instrucciones No retorna valores (pero puede usar parámetros de salida: OUT, INOUT) Puede realizar operaciones DML (INSERT, UPDATE, DELETE) Funciones SQL Estructura CREATE FUNCTION nombre_func (param1 tipo, param2 tipo) RETURNS tipo_retorno BEGIN RETURN expresión; END; Características Debe retornar un valor Puede usarse en consultas SELECT Generalmente no puede realizar operaciones DML (depende del SGBD) Tiene que ser determinista Procedimientos 


CREATE OR REPLACE PROCEDURE insertar_empleado (
    p_nombre IN VARCHAR2,
    p_edad IN NUMBER,
    p_salario IN NUMBER
) AS
BEGIN
    INSERT INTO empleados (nombre, edad, salario)
    VALUES (p_nombre, p_edad, p_salario);
    COMMIT;
END insertar_empleado;

Ejecucion

EXEC insertar_empleado('Juan Pérez', 30, 1500);


Funciones

CREATE OR REPLACE FUNCTION salario_anual (
    p_salario_mensual IN NUMBER
) RETURN NUMBER AS
BEGIN
    RETURN p_salario_mensual * 12;
END salario_anual;

Ejecucion 

SELECT salario_anual(1500) FROM dual;

REFERENCIAS

LIBRO 📖 ORACLE 12c FORMS y REPORTS                "ANTOLIN MUÑOZ CHAPARRO"