Muitas vezes necessitamos armazenar determinados valores para uso posterior. Um exemplo é guardar um valor total em uma variável para que ele seja usado em cálculo de percentual por exemplo.
DECLARE @NOTA FLOAT --SELECT --> CASE
SET @NOTA = 5 --VARIÁVEIS --> IF
IF @NOTA = 7
PRINT 'APROVADO' --UPDATE ALUNO SET STATUS = 'APROVADO'
ELSE
PRINT 'REPROVADO' --UPDATE ALUNO SET STATUS = 'REPROVADO'
Mais um exemplo
DECLARE @IDADEMEDIA INT
SET @IDADEMEDIA =
(SELECT AVG(DATEDIFF(YEAR, ClienteNascimento, GETDATE())) as Ano
from Clientes)
SELECT ClienteNome,DATEDIFF(YEAR, ClienteNascimento, GETDATE()) as Ano
FROM Clientes
WHERE DATEDIFF(YEAR, ClienteNascimento, GETDATE()) >= @IDADEMEDIA
Funções
Uma função é uma sequência de comandos que executa alguma tarefa e que tem um nome. A sua principal finalidade é nos ajudar a organizar programas em pedaços que correspondam a como imaginamos uma solução do problema.
Exemplo de uma função simples
CREATE FUNCTION fnRetornaAno (@data DATETIME)
RETURNS int
AS
BEGIN
DECLARE @ano int
SET @ano = YEAR(@data)
RETURN @ano
END
Mais um exemplo
CREATE FUNCTION fnRetornaIdade
(
@data DATETIME
)
RETURNS int
AS
BEGIN
DECLARE @ano int
DECLARE @anoatual int
DECLARE @IDADE INT
SET @ano = YEAR(@data)
set @anoatual = YEAR(GETDATE())
SET @IDADE = @anoatual - @ano
RETURN @IDADE
END
Mais exemplos
CREATE FUNCTION rico_pobre (
@renda money
)
RETURNS CHAR(10) AS
BEGIN
DECLARE @status CHAR(10);
IF (@renda > 100000) SET @status = 'rico';
ELSE SET @status = 'pobre';
RETURN @status
END;
CREATE FUNCTION fn_retorna_bairro (
@nome CHAR(10)
)
RETURNS TABLE AS
RETURN
SELECT ClienteBairro
FROM Clientes
WHERE ClienteNome = @nome;
Exercícios
- Crie uma função que receba o código do estado civil e mostre ele por extenso.
- Crie uma função que receba o código do sexo e mostre ele por extenso.