web-dev-qa-db-fra.com

Création d'une vue temporaire à partir d'une table temporaire dans SQL Server

J'ai une table temporaire et je voudrais créer une vue temporaire sur cette table temporaire.

C'est possible?

Dans l'exemple suivant, je voudrais #Top10Records être une vue au lieu d'une table pour que j'obtienne

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

Malheureusement, SQL Server ne prend pas en charge ceci:

Msg 4103, niveau 15, état 1, ligne 3
"# someView": les vues temporaires ne sont pas autorisées.
Msg 4508, niveau 16, état 1, ligne 6
Les vues ou fonctions ne sont pas autorisées sur les tables temporaires. Les noms de table commençant par "#" désignent des tables temporaires.

9
marc_s

Vous pouvez utiliser une expression de table commune pour ce faire:

WITH Top10Records  AS 
( 
 select top 10 * from #MytempTable
) 
SELECT * FROM Top10Records 
GO
46
DarylChymko

SQL Server ne prend pas en charge les vues temporaires en tant que telles et comme indiqué ci-dessus par Daryl, une expression de table commune est probablement la voie à suivre. Cependant, une limitation d'un CTE est qu'il ne peut pas être utilisé sur plusieurs requêtes dans un lot. Vous pouvez cependant créer une vue standard, l'utiliser au besoin puis la déposer simplement à la fin du lot/transaction. (Je sais que la question OP est de savoir si vous pouvez ou non créer une vue temporaire, mais cela peut également potentiellement s'appliquer - cela nécessite un changement de schéma, mais transitoire à toutes fins utiles).

0
Michael Haycroft