Как удалить переменные таблицы в SQL-Server? Должен ли я вообще это делать?

У меня есть переменная таблицы в скрипте (не хранимая процедура). Два вопроса:--2-->

  1. Как удалить переменную таблицы? Drop Table @varName дает ошибку" неправильный snytax".
  2. должен ли я всегда это делать? Я слышал, это хорошая практика. Это когда-нибудь действительно необходимо для небольших сценариев, как это?

вот мой код:

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

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

Select *
From @projectList

Drop Table @projectList -- does not work

5 ответов


переменные таблицы автоматически локальны и автоматически отбрасываются-вам не нужно беспокоиться об этом.


переменные таблицы похожи на переменные int или varchar.

вам не нужно бросать их. У них одинаковые объем правила как переменные int или varchar

область действия переменной-это диапазон инструкций Transact-SQL, которые могут ссылаться на переменную. Область действия переменной длится с момента ее объявления до конца пакета или хранимой процедуры, в которой она объявлена.


если кто-то еще столкнется с этим... и вам действительно нужно отбросить его, как в цикле, вы можете просто удалить все из переменной таблицы:

DELETE FROM @tableVariableName

но вы все забыли упомянуть, что если переменная таблица используется в цикле, ей потребуется очистить (удалить @table) перед загрузкой данных снова в цикле.


Как и TempTables, локальная переменная таблицы также создается в TempDB. Область переменной таблицы-это пакет, хранимая процедура и блок инструкций, в котором она объявлена. Они могут передаваться в качестве параметров между процедурами. Они автоматически удаляются при закрытии сеанса, в котором вы их создаете.