@tableName
Переменные таблицы активны на время выполнения скрипта, т. Е. Они являются только объектами уровня сеанса.
Чтобы проверить это, откройте два окна редактора запросов в SQL Server Management Studio и создайте переменные таблицы с одинаковыми именами, но разными структурами. Вы получите представление. Таким образом, объект @tableName
является временным и используется для внутренней обработки данных, и он не влияет на фактическую структуру базы данных.
Существует другой тип табличного объекта, который может быть создан для временного использования. Это #tableName
объекты, объявленные как аналогичные инструкции create для физических таблиц:
Create table #test (Id int, Name varchar(50))
Этот табличный объект создается и хранится во временной базе данных. В отличие от первого, этот объект более полезен, может хранить большие данные и принимать участие в транзакциях и т. Д. Эти таблицы работают до тех пор, пока соединение не будет открыто. Вы должны удалить созданный объект, следуя сценарию, прежде чем создавать его заново.
IF OBJECT_ID('tempdb..#test') IS NOT NULL
DROP TABLE #test
Надеюсь, это имеет смысл!