Mam zmienną tabeli w skrypcie (nie procedurę składowaną). Dwa pytania:
- Jak usunąć zmienną tabeli? Drop Table @varName wyświetla błąd „Incorrect snytax”.
- Czy powinienem zawsze to robić? Słyszałem, że to dobra praktyka. Czy jest to kiedykolwiek konieczne w przypadku takich małych skryptów?
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
sql
sql-server
table-variable
jtpereyda
źródło
źródło
Odpowiedzi:
Zmienne tabeli są automatycznie lokalne i automatycznie usuwane - nie musisz się tym martwić.
źródło
Zmienne tabelowe są takie same jak zmienne typu int czy varchar.
Nie musisz ich upuszczać. Mają te same reguły zasięgu , co zmienne int lub varchar
źródło
jeśli ktoś inny natknie się na to ... i naprawdę musisz to porzucić, tak jak w pętli, możesz po prostu usunąć wszystko ze zmiennej tabeli:
źródło
Ale wszyscy zapomnieliście wspomnieć, że jeśli tabela zmiennych jest używana w pętli, będzie wymagała opróżnienia (usuń @table) przed ponownym załadowaniem danych w pętli.
źródło
Podobnie jak TempTables, lokalna zmienna tabeli jest również tworzona w TempDB. Zakres zmiennej tabeli 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.
źródło
Oto rozwiązanie
Działa dobrze na SQL Server 2014 Christophe
źródło