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



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




  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
762   5  

5 ответов:

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

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

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

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

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

DELETE FROM @tableVariableName

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

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

Comments

    Ничего не найдено.