Rodrigo Fortes

"Só duas coisas são infinitas, o universo e a estupidez humana, mas não estou seguro sobre o primeiro"

Function

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