Подтвердить что ты не робот

Создание переменной таблицы в SQL Server 2008 R2

что такое переменная таблицы? И как создать переменную таблицы (виртуальную таблицу в памяти) с столбцами, которые соответствуют существующему набору результатов хранимой процедуры.

Я выполнил процедуру и после ее выполнения мне известны имена столбцов. Но нужно ли объявлять тот же тип данных столбцов, что и в хранимой процедуре?

EDIT: Я пробовал это

DECLARE @Table TABLE( 
name varchar(30) NOT NULL, 
location varchar(30) NOT NULL 
); 

INSERT @Table 
SELECT name, location FROM 
Exec SPROC @param , @param
4b9b3361

Ответ 1

@tableName Табличные переменные живы для продолжительности работы script, т.е. они являются только объектами уровня сессии.

Чтобы проверить это, откройте два окна редактора запросов под студией управления sql server и создайте переменные таблицы с тем же именем, но с разными структурами. Вы получите представление. Таким образом, объект @tableName является временным и используется для нашей внутренней обработки данных и не вносит вклад в фактическую структуру базы данных.

Существует другой тип объекта таблицы, который может быть создан для временного использования. Это #tableName объекты, объявленные как аналогичные инструкции create для физических таблиц:

Create table #test (Id int, Name varchar(50))

Этот объект таблицы создается и сохраняется в базе данных temp. В отличие от первого, этот объект более полезен, может хранить большие данные и принимать участие в транзакциях и т.д. Эти таблицы сохраняются до тех пор, пока соединение не будет открыто. Вы должны сбросить созданный объект, выполнив script перед его повторным созданием.

IF OBJECT_ID('tempdb..#test') IS NOT NULL
  DROP TABLE #test 

Надеюсь, это имеет смысл!