Programación en Bases de Datos: Procedimientos Almacenados, Triggers y Cursos SQL

Informática y Telecomunicaciones3,77 KB

Introducción a la Programación en Bases de Datos

En este documento exploraremos los conceptos fundamentales para la gestión y programación avanzada de bases de datos utilizando sentencias SQL. A continuación, se detallan los tipos de variables, la creación y modificación de procedimientos almacenados, triggers y cursores.

Tipos de Variables en SQL

Las variables permiten almacenar datos de forma temporal durante la ejecución de bloques de código, procedimientos o funciones. Los tipos de datos más comunes incluyen:

  • @Var1 AS VARCHAR(40): Cadena de caracteres de longitud variable.
  • @Var1 AS NUMBER: Valores numéricos generales.
  • @Var1 AS INT: Números enteros.
  • @Var1 AS DATE: Fechas.
  • @Var1 AS MONEY: Valores monetarios.

Gestión de Procedimientos Almacenados

Crear un Procedimiento Almacenado

Los procedimientos almacenados (Stored Procedures) son rutinas que se almacenan en el servidor de base de datos para ejecutar operaciones complejas de manera eficiente.

CREATE PROCEDURE Proceso1
@Var1 AS VARCHAR(40) /* Variables de entrada */
AS
DECLARE @Var3 VARCHAR2(20); /* Variables locales y de salida */
BEGIN
    SELECT * INTO @Var3 
    FROM Tabla 
    WHERE Columna = @Var1;
    
    DBMS_OUTPUT.PUT_LINE(@Var3);
END;

Alterar un Procedimiento Almacenado

Para modificar un procedimiento existente se utiliza la instrucción ALTER PROCEDURE, incorporando lógica condicional para validar los datos de entrada.

ALTER PROCEDURE Proceso1
@Var1 VARCHAR(15)
AS
IF (@Var1 = '')
BEGIN
    PRINT 'NO SE PUEDEN METER VALORES NULOS';
    RETURN;
END;
ELSE
BEGIN
    SELECT * 
    FROM Tabla 
    WHERE Columna LIKE @Var1 + '%';
    
    PRINT 'PROCEDURE CORRECTO';
END;

Gestión de Triggers (Disparadores)

Crear un Trigger

Los triggers o disparadores son bloques de código que se ejecutan automáticamente cuando ocurre un evento específico (INSERT, UPDATE, DELETE) en una tabla.

CREATE TRIGGER Trig1 
ON Tabla
/* Realizar una de estas operaciones sobre esta tabla activará el trigger */
FOR INSERT, UPDATE, DELETE
AS
DECLARE @Var1 AS INT;

/* Esta operación determina las condiciones a controlar */
SELECT @Var1 = (COUNT(A.Columna#))
FROM Tabla A 
INNER JOIN INSERTED ON A.Columna# = INSERTED.Columna#;
/* Cuenta las referencias de Columna# y si supera 15 no continúa */
/* INSERTED hace referencia a las tuplas en tránsito. De igual forma sirve DELETED y UPDATED */

IF (@Var1 > 15)
BEGIN
    RAISERROR ('MAS DE 15 REFERENCIAS', 16, 1);
    ROLLBACK TRANSACTION;
END;
ELSE
    PRINT 'Correcto';

Nota: Para usar ALTER TRIGGER hay que reescribir el trigger entero. Este comando prácticamente lo borra y crea uno nuevo.

Uso de Cursores en SQL

Los cursores permiten recorrer fila por fila los resultados de una consulta SELECT para realizar operaciones iterativas.

DECLARE @Var1 AS VARCHAR(30), @Var2 INT;

/* Declaramos el cursor y su contenido */
DECLARE Cur CURSOR FOR 
SELECT Columna1, Columna2 FROM Tabla;

/* Abrir el cursor para poder usarlo */
OPEN Cur;

/* Esta línea coloca el cursor en el primer resultado del SELECT y su contenido en las variables */
FETCH FIRST FROM Cur INTO @Var1, @Var2;

WHILE @@FETCH_STATUS = 0
BEGIN
    PRINT @Var1;
    
    UPDATE Tabla
    SET Columna = 'Pozuelo' + CAST(@Var2 AS VARCHAR(10))
    /* CAST convierte a String un numérico para sumarlo a otro String */
    WHERE CURRENT OF Cur; /* Actúa en el registro actual del cursor */
    
    /* Avanza el cursor */
    FETCH NEXT FROM Cur INTO @Var1, @Var2;
END;

CLOSE Cur;
DEALLOCATE Cur;

Descargar

PDF Word HTML