jueves, 29 de marzo de 2012

Tablas Temporales en SQL Server

Tablas Temporales en Sql Server (#table y @table)

Las tablas # son tablas temporales locales que son visibles solo en tu session estas tablas se almacenan en la DB tempdb.
Sintaxis para crear una tabla #.
Create table #paso( id int, nombre varchar(20), apellido varchar(40))
Buscar la tabla dentro de los objetos de la db.
Select name
from tempdb.sysobjects
where name like ‘%#paso%’
Para eliminar la tabla.
drop table #paso
Las tablas @ son mucho mas flexibles y no es necesario eliminarlas ya que al momento de terminar su ejecución se eliminan automaticamente.
Sintaxis para crear una tabla @.
declare  @paso table ( id int, nombre varchar(20), apellido varchar(40))
Cuando usar tablas # y tablas @:
  • Si usted tiene menos de 100 filas puede utilizar una tabla @, De lo contrario usar una tabla temporal. Esto es porque SQL Server no va a crear las estadísticas sobre la tabla @.
  • Si necesita crear índices entonces debe utilizar una tabla temporal #.

Adicional  escribo un ejemplo de la utilizacion de este codigo:


DECLARE @Temp TABLE(ID INT)
DECLARE @Int INT,
        @InnerInt INT
SELECT  @Int = 1,
        @InnerInt = 1

WHILE @Int < 2
BEGIN
    WHILE @InnerInt < 10
    BEGIN
        INSERT INTO @Temp SELECT @InnerInt
        SET @InnerInt = @InnerInt + 1
    END
    SELECT @Int = @Int + 1,
            @InnerInt = 1
        select * from @Temp
    DELETE FROM @Temp
END

GO

DECLARE #Temp TABLE(ID INT)
DECLARE @Int INT,
        @InnerInt INT
SELECT  @Int = 1,
        @InnerInt = 1

WHILE @Int < 2
BEGIN
    WHILE @InnerInt < 10
    BEGIN
        INSERT INTO #Temp SELECT @InnerInt
        SET @InnerInt = @InnerInt + 1
    END
    SELECT @Int = @Int + 1,
            @InnerInt = 1
        select * from #Temp
    TRUNCATE TABLE #Temp
END

No hay comentarios:

Publicar un comentario