sexta-feira, dezembro 13, 2013

SQL - Variáveis dentro de Views

Tudo começou quando dentro de uma View queria utilizar o resultado de uma query uma dúzia de vezes. Como essa query demorava cerca de 6 segundos a executar, a ideia era armazenar os valores numa variável table e a partir daí utilizar a variável. Problema, não é possível declarar variáveis dentro de Views. Após alguma pesquisa a solução que encontrei consiste em 2 passos:
  1. Criar uma Table-valued function que faz todo o trabalho que a View deveria ter e retorna o resultado que a View tem de devolver.
  2. A View faz bypass do resultado da Table-valued function

CREATE FUNCTION [dbo].[XPTO] ()
RETURNS @result TABLE 
(
 id int,
 field1 nvarchar(50) 
)
BEGIN

   --Todo o código necessário
   --Aqui já é possível declarar variáveis
   RETURN
END
----------------------------------------------
CREATE VIEW [dbo].[MyView]
AS
  SELECT * FROM [dbo].[XPTO]()

Sem comentários: