tipo temporales tablas tabla puedo modificar las eliminar donde dinamica crear consultar almacenan sql sql-server table-variable

temporales - no puedo modificar tablas en sql server 2008



¿Cómo elimino variables de tabla en SQL-Server? ¿Debería incluso hacer esto? (5)

Tengo una variable de tabla en una secuencia de comandos (no un procedimiento almacenado). Dos preguntas:

  1. ¿Cómo elimino la variable de la tabla? Drop Table @varName da un error "Incorrecto snytax".
  2. ¿Debería siempre hacer esto? Escuché que es una buena práctica. ¿Alguna vez es realmente necesario para pequeños guiones como este?

Aquí está mi código:

Declare @projectList table( name varchar(40) NOT NULL); Insert Into @projectList Values (''BCR-00021'') Select * From @projectList Drop Table @projectList -- does not work


Al igual que TempTables, una variable de tabla local también se crea en TempDB. El alcance de la variable de tabla es el lote, el procedimiento almacenado y el bloque de instrucción en el que se declara. Se pueden pasar como parámetros entre procedimientos. Se eliminan automáticamente cuando cierra la sesión en la que los creó.


Las variables de tabla son automáticamente locales y se eliminan automáticamente; no tiene que preocuparse por eso.


Las variables de tabla son como las variables int o varchar.

No necesita dejarlos caer. Tienen las mismas reglas de scope que las variables int o varchar

El alcance de una variable es el rango de instrucciones de Transact-SQL que pueden hacer referencia a la variable. El alcance de una variable dura desde el punto en que se declara hasta el final del lote o el procedimiento almacenado en el que se declara.


Pero todos olvidaron mencionar que si una tabla de variables se usa dentro de un bucle, necesitará vaciarse (borrar @table) antes de cargar datos nuevamente dentro de un bucle.


si alguien más se encuentra con esto ... y realmente necesita dejarlo como en un bucle, puede borrarlo todo de la variable de la tabla:

DELETE FROM @tableVariableName