Ich habe eine Tabellenvariable in einem Skript (keine gespeicherte Prozedur). Zwei Fragen:
- Wie lösche ich die Tabellenvariable? Drop Table @varName gibt einen Fehler "Falsche Snytax" aus.
- Soll ich das immer machen Ich höre, es ist eine gute Praxis. Ist es jemals wirklich notwendig für solche kleinen Skripte?
Hier ist mein 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
quelle
quelle
Antworten:
Tabellenvariablen sind automatisch lokal und werden automatisch gelöscht - Sie müssen sich darüber keine Sorgen machen.
quelle
Tabellenvariablen sind genau wie int- oder varchar-Variablen.
Sie müssen sie nicht fallen lassen. Sie haben dieselben Bereichsregeln wie int- oder varchar-Variablen
quelle
Wenn jemand anderes darauf stößt ... und Sie es wirklich wie in einer Schleife löschen müssen, können Sie einfach alles aus der Tabellenvariablen löschen:
quelle
Sie alle haben jedoch vergessen zu erwähnen, dass eine Variablentabelle, die in einer Schleife verwendet wird, vor dem erneuten Laden mit Daten in einer Schleife geleert (delete @table) werden muss.
quelle
Genau wie TempTables wird auch in TempDB eine lokale Tabellenvariable erstellt. Der Bereich der Tabellenvariablen ist der Stapel, die gespeicherte Prozedur und der Anweisungsblock, in dem sie deklariert ist. Sie können als Parameter zwischen Prozeduren übergeben werden. Sie werden automatisch gelöscht, wenn Sie die Sitzung schließen, in der Sie sie erstellen.
quelle
Hier ist eine Lösung
Funktioniert gut unter SQL Server 2014 Christophe
quelle