Jak usunąć zmienne tabel w SQL-Server? Powinienem w ogóle to zrobić?

Mam zmienną tabelkową w skrypcie (nie procedurę składowaną). Dwa pytania:

  1. Jak usunąć zmienną table? Drop Table @varName wyświetla błąd "Incorrect snytax".
  2. Czy zawsze powinienem to robić? Słyszałem, że to dobra praktyka. Czy to naprawdę konieczne dla małych skryptów jak ten?

Oto Mój kod:

Declare @projectList table(
    name varchar(40) NOT NULL);

Insert Into @projectList
Values ('BCR-00021')

Select *
From @projectList

Drop Table @projectList -- does not work
Author: jtpereyda, 2011-04-13

5 answers

Zmienne tabeli są automatycznie lokalne i automatycznie usuwane -- nie musisz się tym martwić.

 145
Author: Hogan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-13 18:01:40

Zmienne tabel są tak samo jak zmienne int lub varchar.

Nie musisz ich upuszczać. Mają te same reguły scope Jak zmienne int lub varchar

Zakres zmiennej jest zakresem poleceń Transact-SQL, które mogą odwoływać się do zmiennej. Zakres zmiennej trwa od momentu jej zadeklarowania do końca procedury wsadowej lub składowanej, w której została zadeklarowana.

 28
Author: gbn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-13 18:04:22

Jeśli ktoś inny się na to natknie... i naprawdę trzeba upuścić go jak w pętli, można po prostu usunąć wszystko ze zmiennej tabeli:

DELETE FROM @tableVariableName
 7
Author: Leo Much,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-02 08:28:09

Ale zapomnieliście wspomnieć, że jeśli zmienna tabela jest używana w pętli, będzie ona musiała opróżnić (delete @ table) przed ponownym załadowaniem danych w pętli.

 4
Author: Peppe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-27 21:11:04

Podobnie jak TempTables, zmienna lokalnej tabeli jest również tworzona w TempDB. Zakres zmiennej table to partia, procedura składowana i blok instrukcji, w którym jest zadeklarowana. Mogą być przekazywane jako parametry między procedurami. Są one automatycznie usuwane po zamknięciu sesji, w której zostały utworzone.

 3
Author: Gagan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-22 01:00:00