Buscar

Função InLine

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

FUNÇÕES IN-LINE
As funções in-line definidas pelo usuário retornam uma tabela e são referenciadas na cláusula FROM, da mesma maneira que uma view. Ao usar funções in-line definidas pelo usuário, considere os fatos e diretrizes a seguir: 
A cláusula RETURN contém uma única instrução SELECT entre parênteses. O conjunto de resultados da instrução SELECT constitui a tabela que a função retorna. A instrução SELECT usada em uma função in-line está sujeita às mesmas restrições que as instruções SELECT usadas em views.
BEGIN e END não delimitam o corpo da função.
RETURN especifica table como o tipo de dados retornado.
Não é necessário definir o formato de uma variável de retorno porque ele é definido pelo formato do conjunto de resultados da instrução SELECT na cláusula RETURN.
/*_____________________________________________________________________________
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¦¦+-----------+------------+-------+----------------------+------+------------+¦
¦¦¦ Fn_ProdResults ¦ Autor ¦ Williams Messa ¦ Data ¦ 06/02/2004 ¦¦
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ Analista de Negocios - DBA ¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦ Microsiga S/A - Arm Amazonas¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¦¦+-----------+------------+-------+----------------------+------+------------+¦
¦¦¦ OBS.: ¦ Muito útil para uma instrução Select grande, que faz Inner ¦¦
¦¦¦ OBS.: ¦ Join com varias tabelas,pode usar estas funcoes para	 ¦¦
¦¦¦ OBS.: ¦ obter funcionalidades de Views com Parametros 		 ¦¦
¦¦+-----------+---------------------------------------------------------------+¦
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*/
--Testa se esta Função já existe no Banco para ser Criada Novamente
IF EXISTS (SELECT * FROM sysobjects WHERE name = N'Fn_ProdResults')
	 DROP FUNCTION Fn_ProdResults
Go
--Inicio da Criação da Função
Create Function dbo.Fn_ProdResults(@IN_MVPAR01 VARCHAR(15),
			 	 @IN_MVPAR02 VARCHAR(15))	--Parametros que serão informados pelo usuário
	Returns @Tabela Table		--Define o tipo de Retorno no caso será uma Table	
					--Inicio da Estrutura da Table	
	(PRODUTO	 Varchar(15)	not null,
	 DESCRICAO		Varchar(120)	not null,
	 TIPO			Varchar(03)	not null,
	 UN			Varchar(02)	not null
	)
Begin			 	--Corpo da Função(Pode se colocar IF,efetuar calculos,Etc)	
	--Carrego a tabela de retorno
	Insert @Tabela(PRODUTO,DESCRICAO,TIPO,UN) -Insert Select é melhor com um Insert Into
	Select B1_COD,B1_DESC,B1_TIPO,B1_UM From SB1990
	Where B1_COD >= @IN_MVPAR01 AND B1_COD <= @IN_MVPAR02 AND D_E_L_E_T_ = ' '
	-- Clausula para Filtro do Select com parametros Recebidos
Order By B1_COD	-- Ordem
	--Retorno da function
	Return 
End
-- Para Testar os parametros tem que ser passados na sequência!!!
SELECT *FROM dbo.Fn_ProdResults('000000000000008','000000000001399')

Outros materiais