У меня есть табличная переменная в скрипте (не хранимая процедура). Два вопроса:
- Как удалить переменную таблицы? 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
sql
sql-server
table-variable
jtpereyda
источник
источник
Ответы:
Табличные переменные автоматически становятся локальными и автоматически удаляются - вам не о чем беспокоиться.
источник
Табличные переменные похожи на переменные типа int или varchar.
Их не нужно ронять. У них те же правила области видимости, что и у переменных типа int или varchar.
источник
если кто-то еще столкнется с этим ... и вам действительно нужно отбросить это, как в цикле, вы можете просто удалить все из переменной таблицы:
источник
Но вы все забыли упомянуть, что если таблица переменных используется в цикле, ее необходимо очистить (удалить @table) перед повторной загрузкой данных в цикле.
источник
Как и TempTables, в TempDB также создается локальная табличная переменная. Объем табличной переменной - это пакет, хранимая процедура и блок операторов, в которых она объявлена. Их можно передавать как параметры между процедурами. Они автоматически удаляются, когда вы закрываете сеанс, в котором вы их создали.
источник
Вот решение
Прекрасно работает на SQL Server 2014 Christophe
источник