Tengo una variable de tabla en un script (no un procedimiento almacenado). Dos preguntas:
- ¿Cómo elimino la variable de la tabla? Drop Table @varName da un error "Snytax incorrecto".
- ¿Debería hacer siempre esto? Escuché que es una buena práctica. ¿Es realmente necesario alguna vez para guiones pequeños 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
sql
sql-server
table-variable
jtpereyda
fuente
fuente
Respuestas:
Las variables de tabla son automáticamente locales y se eliminan automáticamente, no tiene que preocuparse por eso.
fuente
Las variables de tabla son como variables int o varchar.
No es necesario que las suelte. Tienen las mismas reglas de alcance que las variables int o varchar
fuente
si alguien más se encuentra con esto ... y realmente necesita soltarlo como en un bucle, puede eliminar todo de la variable de la tabla:
fuente
Pero todos olvidaron mencionar que si se usa una tabla de variables dentro de un bucle, será necesario vaciarla (eliminar @table) antes de volver a cargar con datos dentro de un bucle.
fuente
Al igual que TempTables, también se crea una variable de tabla local en TempDB. El alcance de la variable de tabla es el lote, el procedimiento almacenado y el bloque de instrucciones 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ó.
fuente
Aquí hay una solución
Funciona bien en SQL Server 2014 Christophe
fuente