Создание временного представления из временной таблицы в SQL Server - PullRequest
20 голосов
/ 25 августа 2011

У меня есть временная таблица, и я хотел бы создать временное представление для этой временной таблицы.

Возможно ли это?

В следующем примере я бы хотел, чтобы #Top10Records былсмотреть вместо таблицы, чтобы я получил

select * into #Top10Records from (select top 10 * from #MytempTable)

Ответы [ 3 ]

40 голосов
/ 25 августа 2011

Вы можете использовать выражение Common Table, чтобы сделать это:

WITH Top10Records  AS 
( 
 select top 10 * from #MytempTable
) 
SELECT * FROM Top10Records 
GO
8 голосов
/ 25 августа 2011

К сожалению, SQL Server не поддерживает это:

Сообщение 4103, уровень 15, состояние 1, строка 3
"#someView": временные представления запрещены.
Сообщение 4508, Уровень 16, Состояние 1, Строка 6
Представления или функции не разрешены для временных таблиц.Имена таблиц, начинающиеся с '#', обозначают временные таблицы.

0 голосов
/ 17 февраля 2019

SQL Server не поддерживает временные представления как таковые, и, как указано выше Дэрилом, общее табличное выражение, вероятно, является подходящим способом.Однако одним из ограничений CTE является то, что его нельзя использовать для нескольких запросов в пакете.Однако вы можете создать стандартное представление, использовать его по мере необходимости, а затем просто удалить его в конце пакета / транзакции.(Я знаю, что вопрос OP заключается в том, можете ли вы создать временное представление или нет, но это также может потенциально применяться - для этого требуется изменение схемы, но временное для всех намерений и целей).

...