56 votes

Est-il possible de créer une table temporaire dans une vue et de la supprimer après la sélection ?

J'ai besoin de modifier une vue et je souhaite introduire 2 tables temporaires avant le SELECT.

Est-ce possible? Et comment puis-je le faire?

 ALTER VIEW myView
AS 

SELECT *
INTO #temporary1

SELECT *
INTO #temporary2

SELECT * FROM #temporary1
UNION ALL 
SELECT * FROM #temporary1

DROP TABLE #temporary1
DROP TABLE #temporary2

Lorsque j'essaie cela, il se plaint que ALTER VIEW doit être la seule instruction du lot.

Comment puis-je atteindre cet objectif?

4voto

Emir Akaydın Points 3969

Vous pouvez réaliser ce que vous essayez de faire, en utilisant un Stored Procedure qui renvoie un résultat de requête. Views ne sont pas adaptés/développés pour des opérations comme celle-ci.

2voto

Ángel Ibáñez Points 141

Pas possible mais si vous essayez CTE, ce serait le code :

 ALTER VIEW [dbo].[VW_PuntosDeControlDeExpediente]
AS
    WITH TEMP (RefLocal, IdPuntoControl, Descripcion) 
    AS 
    (
        SELECT 
              EX.RefLocal
            , PV.IdPuntoControl
            , PV.Descripcion
        FROM [dbo].[PuntosDeControl] AS PV
        INNER JOIN [dbo].[Vertidos] AS VR ON VR.IdVertido = PV.IdVertido
        INNER JOIN [dbo].[ExpedientesMF] AS MF ON MF.IdExpedienteMF = VR.IdExpedienteMF
        INNER JOIN [dbo].[Expedientes] AS EX ON EX.IdExpediente = MF.IdExpediente
    )
    SELECT 
          Q1.[RefLocal]
        ,    [IdPuntoControl] = ( SELECT MAX(IdPuntoControl) FROM TEMP WHERE [RefLocal] = Q1.[RefLocal] AND [Descripcion] = Q1.[Descripcion] )
        , Q1.[Descripcion]
    FROM TEMP AS Q1
    GROUP BY Q1.[RefLocal], Q1.[Descripcion]
GO

0voto

K. Ventura Points 31

Essayez de créer une autre vue SQL au lieu d'une table temporaire, puis de la référencer dans la vue SQL principale. En d'autres termes, une vue dans une vue. Vous pouvez ensuite supprimer la première vue une fois que vous avez terminé de créer la vue principale.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X