sql-server - функциях - объявление временной таблицы sql




Возможно ли создать временную таблицу в представлении и удалить ее после выбора? (2)

Мне нужно изменить один вид, и я хочу ввести 2 временных таблицы перед SELECT.

Это возможно? И как я могу это сделать?

ALTER VIEW myView
AS 

SELECT *
INTO #temporary1

SELECT *
INTO #temporary2

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

DROP TABLE #temporary1
DROP TABLE #temporary2

Когда я пытаюсь это сделать, он жалуется, что ALTER VIEW должен быть единственным заявлением в пакете.

Как я могу это достичь?


Вы можете добиться того, что вы пытаетесь сделать, используя Stored Procedure которая возвращает результат запроса. View s не подходят для таких операций, как этот.


Да, это код:

 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 




tsql