J'ai une variable de table dans un script (pas une procédure stockée). Deux questions:
- Comment supprimer la variable de table? Drop Table @varName donne une erreur "incorrect snytax".
- Dois-je toujours faire ça? J'entends que c'est une bonne pratique. Est-ce vraiment nécessaire pour de petits scripts comme celui-ci?
Voici mon code:
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
la source
la source
Réponses:
Les variables de table sont automatiquement locales et automatiquement supprimées - vous n'avez pas à vous en soucier.
la source
Les variables de table sont exactement comme les variables int ou varchar.
Vous n'avez pas besoin de les laisser tomber. Ils ont les mêmes règles de portée que les variables int ou varchar
la source
si quelqu'un d'autre rencontre cela ... et que vous devez vraiment le supprimer comme dans une boucle, vous pouvez simplement tout supprimer de la variable de table:
la source
Mais vous avez tous oublié de mentionner que si une table de variables est utilisée dans une boucle, elle devra être vidée (supprimer @table) avant de charger à nouveau les données dans une boucle.
la source
Tout comme TempTables, une variable de table locale est également créée dans TempDB. La portée de la variable de table est le lot, la procédure stockée et le bloc d'instructions dans lesquels elle est déclarée. Ils peuvent être passés en tant que paramètres entre les procédures. Ils sont automatiquement supprimés lorsque vous fermez la session sur laquelle vous les créez.
la source
Voici une solution
Fonctionne bien sur SQL Server 2014 Christophe
la source