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