Function ou em português, função, é uma rotina Transact-SQL ou Common Language Runtime (CLR) que aceita parâmetros, executa uma ação, como um cálculo complexo, e retorna o resultado dessa ação como um valor. O valor de retorno pode ser um valor escalar (único) ou uma tabela.
Vamos ver como criá-las
Basicamente o código é bem simples.
create function 'nome da função'(parametro1, parametro2, ...)
begin
comandos...
return 'valor'
end
Como já comentei na Stored Procedure, verifico se a função já existe, caso exista darei um drop (delete) na função
if exists (select * from sysobjects where id = object_id('FunctionTeste'))
drop function FunctionTeste
Go
--Crio a função declarando seus parâmetros
create function FunctionTeste(@campo1 int, @campo2 char(1), @campo3 datetime, @campo4 int)
--Criptografo o código
with encryption as
--Inicio os comandos
begin
--Declaro algumas variáveis
declare @dias int,
@Avaliacao char(1),
@dtOS datetime,
@dtPrazo datetime
--inicializo as minhas variáveis
select @dias = -1, @Avaliacao = 'N'
--insiro dados da tabela SubNivel nas minhas variáveis
select @dias = IsNull(SubNivel.dias, -1) from SubNivel with(nolock) where SubNivel.cdOSNivel= @campo1 and SubNivel.status = @campo2
--verifico a variável dias é maior que -1
if (@dias >= 0)
begin
--insiro a data retornada da consulta na variável @dtOS
select @dtOS = max(OS.dtDig) from OS with(nolock) where OS.cdOS = @campo4
--insiro a data retornada da consulta na variável @dtPrazo
select @dtPrazo = max(OSMO.dtPrazo) from OSMO with(nolock) where OS.cdOS = @campo4
--verifico se o @dtPrazo é menor que @dtAtual, se for menor seto a variável @Avaliacao com 'A' senão seto com 'S'
if (@dtPrazo <= @dtAtual)
set @Avaliacao = 'A'
else
set @Avaliacao = 'S'
end
--Retorno o valor da variável @Avaliacao
return @Avaliacao
end
Go
Function
Rodrigo Fortes
terça-feira, junho 28, 2011