Jak usunąć zmienne tabel w SQL-Server? Powinienem w ogóle to zrobić?
Mam zmienną tabelkową w skrypcie (nie procedurę składowaną). Dwa pytania:
- Jak usunąć zmienną table? Drop Table @varName wyświetla błąd "Incorrect snytax". 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
5 answers
Zmienne tabeli są automatycznie lokalne i automatycznie usuwane -- nie musisz się tym martwić.
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.
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
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.
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.
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