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 !