Как удалить табличные переменные в SQL-Server? Должен ли я вообще это делать?
У меня есть табличная переменная в скрипте (не хранимая процедура). Два вопроса:
- Как удалить переменную таблицы? Drop Table @varName дает ошибку "неверный snytax".
- должен ли я всегда это делать? Я слышал, это хорошая практика. Это когда-нибудь действительно необходимо для небольших сценариев, как это?
вот мой код:
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.
вам не нужно бросать их. У них же scope правила как переменные int или varchar
область действия переменной-это диапазон инструкций Transact-SQL, которые могут ссылаться на переменную. Область действия переменной длится с момента ее объявления до конца пакета или хранимой процедуры, в которой она объявлена.
если кто-то еще столкнется с этим... и вам действительно нужно отбросить его, как в цикле, вы можете просто удалить все из переменной таблицы:
DELETE FROM @tableVariableName
но вы все забыли упомянуть, что если переменная таблица используется в цикле, она будет нуждаться в опорожнении (delete @table) перед загрузкой данных снова в цикле.
как и TempTables, локальная табличная переменная также создается в базе данных TempDB. Область действия табличной переменной-это пакет, хранимая процедура и блок инструкций, в котором она объявлена. Они могут передаваться как параметры между процедурами. Они автоматически удаляются при закрытии сеанса, в котором они были созданы.
Comments