No momento, você está visualizando Criando funções em SQL

Criando funções em SQL

  • Autor do post:
  • Tempo de leitura:1 minutos de leitura
  • Categoria do post:Dados

Como referenciar este texto: Criando funções em SQL’. Rodrigo Terra. Publicado em: 18/02/2025. Link da postagem: https://www.makerzine.com.br/dados/criando-funcoes-em-sql/.

Conteúdos que você verá nesta postagem

No contexto de bancos de dados relacionais, a criação de funções em SQL é um recurso poderoso para encapsular lógica reutilizável, tornando consultas mais organizadas e eficientes. As funções permitem que desenvolvedores e administradores de banco de dados executem operações específicas, retornando valores únicos ou conjuntos de resultados. Diferentemente das stored procedures, que podem executar múltiplas operações e retornar diversos tipos de resultados, as funções são projetadas para retornar um valor específico e são frequentemente utilizadas em consultas SQL.

Primeiros passos ...

A criação de uma função em SQL geralmente envolve a definição do nome da função, dos parâmetros de entrada, do tipo de retorno e do corpo da função, que contém a lógica a ser executada. Em sistemas como PostgreSQL, SQL Server e MySQL, a sintaxe pode variar, mas segue um padrão semelhante.

 

A seguir, um exemplo básico de criação de uma função em SQL:

				
					CREATE FUNCTION dbo.CalculaDesconto (@preco DECIMAL(10,2), @desconto DECIMAL(5,2))
RETURNS DECIMAL(10,2)
AS
BEGIN
    RETURN @preco - (@preco * @desconto / 100);
END;
				
			

Neste exemplo, a função CalculaDesconto recebe um preço e uma porcentagem de desconto, retornando o valor final com o desconto aplicado.

Para utilizá-la, basta chamá-la dentro de uma consulta:

				
					SELECT dbo.CalculaDesconto(100, 10) AS PrecoFinal;
				
			

O uso de funções em SQL facilita a manutenção do código, melhora a reutilização e pode otimizar o desempenho de consultas repetitivas. Além disso, sua implementação auxilia na padronização de cálculos e regras de negócio dentro do banco de dados.

Aprofundando a criação de funções em SQL

A criação de funções personalizadas em SQL permite automatizar cálculos e reduzir a repetição de código, proporcionando mais eficiência e clareza no desenvolvimento de consultas.

O exemplo abaixo, destaca-se um caso comum em bancos de dados: a necessidade de calcular diferenças entre datas em diferentes unidades de tempo (dias, semanas, meses e anos).

Criando a Função datediff

A função datediff definida no script permite calcular diferenças entre datas com base em uma unidade de tempo especificada (dias, semanas, meses ou anos):

				
					CREATE FUNCTION datediff(unidade VARCHAR, data_inicial DATE, data_final DATE)
RETURNS INTEGER
LANGUAGE sql
AS
$$
    SELECT
        CASE
            WHEN unidade IN ('d', 'day', 'days') THEN (data_final - data_inicial)
            WHEN unidade IN ('w', 'week', 'weeks') THEN (data_final - data_inicial) / 7
            WHEN unidade IN ('m', 'month', 'months') THEN (data_final - data_inicial) / 30
            WHEN unidade IN ('y', 'year', 'years') THEN (data_final - data_inicial) / 365
        END AS diferenca;
$$
				
			

Explicação da Função

  • A função recebe três parâmetros:
    • unidade: define a unidade de tempo para o cálculo (dias, semanas, meses ou anos).
    • data_inicial: a data de referência.
    • data_final: a data até onde a diferença será calculada.
  • A lógica do CASE verifica a unidade solicitada e realiza a conversão apropriada.
  • O resultado é um valor inteiro representando a diferença na unidade escolhida.

Isso permite chamar a função de forma prática e intuitiva:

				
					SELECT datediff('years', '2021-02-04', current_date);
				
			

Que retornará a diferença em anos entre 2021-02-04 e a data atual.

Vantagens do Uso de Funções em SQL

  • Reutilização e Organização
    Criar funções como datediff evita a repetição de cálculos e melhora a manutenção do código.

  • Maior Clareza nas Consultas
    Ao invés de escrever expressões matemáticas repetitivas para cada cálculo, basta chamar a função.

  • Facilidade de Atualização
    Se a lógica precisar de ajustes, a alteração ocorre apenas na função, sem necessidade de modificar múltiplos scripts SQL.

  • Padronização dos Cálculos
    Em sistemas que utilizam múltiplas consultas para calcular diferenças de datas, uma função centralizada garante consistência nos resultados.

Se você acha que este conteúdo pode ser útil para alguém, compartilhe!

Ao divulgar os textos do MakerZine, você contribui para que todo o material continue acessível e gratuito para todas as pessoas.

Rodrigo Terra

Com formação inicial em Física, especialização em Ciências Educacionais com ênfase em Tecnologia Educacional e Docência, e graduação em Ciências de Dados, construí uma trajetória sólida que une educação, tecnologias ee inovação. Desde 2001, dedico-me ao campo educacional, e desde 2019, atuo também na área de ciência de dados, buscando sempre encontrar soluções focadas no desenvolvimento humano. Minha experiência combina um profundo conhecimento em educação com habilidades técnicas em dados e programação, permitindo-me criar soluções estratégicas e práticas. Com ampla vivência em análise de dados, definição de métricas e desenvolvimento de indicadores, acredito que a formação transdisciplinar é essencial para preparar indivíduos conscientes e capacitados para os desafios do mundo contemporâneo. Apaixonado por café e boas conversas, sou movido pela curiosidade e pela busca constante de novas ideias e perspectivas. Minha missão é contribuir para uma educação que inspire pensamento crítico, estimule a criatividade e promova a colaboração.

Deixe um comentário