Tablas temporales en SQL Server y su utilidad


Cuando desarrollamos aplicaciones en algunas circunstancias ciertos procesos no pueden efectuarse en una sola consulta de T-SQL, por lo que recurrimos a algunos artilujios para permitirnos jugar un poco con los datos antes de devolverlos a nuestra aplicación, aunque ciertos programadores prefiramos realizar toda la lógica de negocio dentro de nuestro servidor, algunos prefieren hacerlo con el lenguaje de la aplicación dentro de esta.

Para fines de este ejemplo asumimos que se trata de un procedimiento almacenado.

Tipos de tablas temporales

  • #locales_a_la_conexion: Este tipo de tablas temporales se crean anteponiendo el caracter comodín ‘#’, y con locales a la conexión que la creó, es decir que su ciclo de vida termina al el usuario cierra la conexión con el servidor.
  • ##globales: Las tablas temporales globales se crean anteponiendo dos caracteres comodín ‘##’, éstas son visibles por todos los usuarios conectados al servidor, además estas desaparecen cuando ningún usuario está haciendo referencia a éstas, no cuando el usuario que la creó se desconecta.
  • @locales_al_procedimiento: Este tipo de tablas son locales al procedimiento en donde se crearon, y desaparecen cuando la última línea de este es leída por el compilador. Son las más utilizadas debido a que nos ayudan a resolver la mayor parte de nuestros requerimientos. Estas facilitan tareas de recorridos en ciclos, realizar inner joins con tablas permanentes u otras tablas temporales.
  • Temp: Este otro tipo de tabla temporal se crea dentro de la base de datos temp, además posee todas las características de una tabla normal, pero esta desaparece cuando el servidor es apagado.

Para nuestro ejemplo utilizaremos las tablas @locales_al_procedimiento

--Declaracion de la tabla temporal
DECLARE @TablaTemporal TABLE(ID INT IDENTITY NOT NULL PRIMARY KEY, Nombre VARCHAR(255), Edad INT)

--Insercion de registros
INSERT INTO @TablaTemporal
SELECT 'Luis Manuel Calderon Molina', 37

INSERT INTO @TablaTemporal
SELECT 'Carlos Perez Estrada', 42

INSERT INTO @TablaTemporal
SELECT 'Stephany Balmaceda', 55

--Seleccion de registros
SELECT * FROM @TablaTemporal

El resultado sería:

Suerte !

Deja una respuesta

Tu dirección de correo electrónico no será publicada.