Blog

Postado em em 19 de abril de 2024

O que é uma Function no SQL – Como criar uma

Entenda o que é uma function no SQL, qual sua sintaxe, como ela funciona e como criar uma.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

O que é uma Function no SQL – Como criar uma

Na aula de hoje, vou te ensinar o que é uma função no SQL. Vou te mostrar como é a sintaxe dela, como ela funciona e te passar alguns exemplos de criação e aplicação.

A ideia é que você consiga entender o que é uma função no SQL e como ela pode te ajudar em seus projetos.

Por fim, vou te ensinar como excluir uma função no SQL, porque as funções que nós criamos ficam armazenadas. Então, podemos excluí-las via código ou pelo próprio programa.

E aí, quer aprender a construir funções no SQL? Então, vem comigo que eu vou te mostrar!

O que são Functions no SQL

Uma função é um conjunto de códigos ou cálculos que você pode salvar no seu banco de dados e executar quando quiser, sem a necessidade de criar o código do zero sempre que precisar executar aqueles comandos.

As funções são utilizadas em diversas linguagens de programação, incluindo o SQL, e permitem executar cálculos ou operações específicas sem a necessidade de reescrever o código repetidamente.

Delimitador da Function no SQL

Assim como com as Procedures, para iniciarmos a escrita de uma função no SQL, precisamos ajustar o delimitador.

Sempre que trabalhamos com muitas linhas de código no SQL, essas linhas precisam ser delimitadas por meio de um separador, que por padrão é o ponto e vírgula (;).

Isso indica para o SQL que aquele código, aquele comando, deve ser executado até aquela etapa.

Como nas funções iremos trabalhar com um bloco de códigos, com diversos comandos sendo executados de uma vez, precisamos ajustar o delimitador para que o SQL não entenda que a cada ponto e vírgula, o comando foi finalizado.

Você pode definir os caracteres que desejar como delimitador temporário, mas é importante que os caracteres escolhidos não interfiram com as sintaxes já existentes do SQL. Por isso, é muito comum utilizar o $$.

Com isso, o SQL irá executar todo o bloco de código contido dentro dele, até o final daquele delimitador. Após encerrar o delimitador temporário, podemos voltar para o delimitador padrão, voltando para o ponto e vírgula.

Criação da Função no SQL

Para criar uma função, vamos utilizar o comando create function, seguido do nome dela. Esse nome não pode ter espaços e nem caracteres especiais.

Em seguida, entre parênteses, passamos os parâmetros necessários para que ela funcione corretamente. Uma mesma função pode ter diversos parâmetros e de diferentes tipos, como inteiros, varchar, e assim por diante.

Após os parâmetros, precisamos definir o tipo de retorno dessa função e se ela é determinística (deterministic), ou seja, se dado um conjunto específico de entradas, ela sempre produzirá o mesmo resultado.

Basicamente, isso diz que não importa quantas vezes essa função seja chamada, se ela receber os mesmos parâmetros, o resultado sempre será o mesmo.

Feito isso, seguimos com o bloco begin, onde o código é efetivamente desenvolvido e onde definimos a expressão de retorno dessa função. Por fim, finalizamos o delimitador temporário e retornamos para o delimitador padrão.

delimiter $$
create function nome-funcao(param1 tipo1, param2 tipo2)
returns tipo deterministic
begin
    codigo1;
    codigo2;
    codigo3;
    return expressao
end $$
delimiter ;

Após a criação da função, podemos utilizá-la em consultas SQL, como um select, por exemplo:

select nome_funcao(valor1, valor2)

Functions no SQL

No SQL, temos algumas funções pré-definidas que podem nos auxiliar durante as nossas consultas e você provavelmente já utilizou alguma delas.

Por exemplo, podemos pegar os dados de uma tabela e querer os nomes dos clientes todos em letras maiúsculas. Para isso, podemos utilizar a função upper.

select upper(Nome) from clientes;

Função no SQL - Upper

Ou então, podemos utilizar a função count para realizar uma contagem das informações de uma coluna específica.

select count(Nome) from clientes;

Função no SQL - Count

Além dessas, existem diversas outras funções prontas dentro do SQL que podemos utilizar para trabalhar com números, textos e datas sem precisar criar do zero.

1º Exemplo de Function no SQL – Calcular Automaticamente o Faturamento

Vamos ver nosso primeiro exemplo de function na prática. Para isso, vamos criar uma function que calcula automaticamente o faturamento de uma venda.

Essa function receberá os valores de preço (decimal) e quantidade (int) e retornará o faturamento, um valor decimal, que será a multiplicação entre esses dois valores.

Para começarmos, o primeiro passo será definir o delimitador temporário. Em seguida, vamos usar o comando create function passando o nome calculaFaturamento para a função e os parâmetros que ela precisa receber, preço e quantidade.

Precisamos definir o tipo de cada um desses parâmetros, sendo o preço do tipo decimal, com no máximo 10 dígitos e duas casas decimais, e a quantidade que será do tipo inteiro.

Em seguida, definimos o tipo de retorno dessa function, que será do tipo decimal, também com até 10 dígitos e duas casas decimais. Feito isso, vamos criar o bloco begin. Nele iremos definir a lógica da nossa função.

 Como é uma função bastante simples, podemos definir a lógica dela direto no return. Isso porque o retorno dessa função será justamente a multiplicação desses dois valores.

delimiter $$
create function calculaFaturamento(preco decimal(10, 2), quantidade int)
 returns decimal(10 ,2) deterministic
begin
    return preco * quantidade;
end $$
delimiter ;

Selecionamos toda a function e executamos o comando para que ela seja criada. Para saber se ela foi criada corretamente podemos atualizar a visualização dos schemas do banco de dados. Se tudo deu certo, ela será exibida.

podemos atualizar a visualização dos schemas do banco de dados

Para utilizá-la podemos usar o comando select passando para ela os valores dos parâmetros em ordem.

select calculaFaturamento(100, 10);

Função de calculo de faturamento no SQL

E temos o resultado esperado de mil escrito com duas casas decimais, lembrando que o retorno dessa função é em decimal.

Essa foi uma aplicação simples da function, mas podemos utilizá-la com uma tabela e realizar um cálculo no banco de dados.

Vou pegar uma tabela como exemplo em que tenho a quantidade vendida e o preço unitário de alguns produtos.

select * from pedidos;

Tabela pedidos

Para aplicar nossa função nessa tabela poderíamos fazer da seguinte forma:

select
    id_pedido,
    data_venda,
    qtd_vendida,
    preco_unit,
    calculaFaturamento(preco_unit, qtd_vendida) as faturamento_venda
from pedidos;

Função de calculo de faturamento no SQL

2º Exemplo de Function no SQL – Removendo acentos do Texto

Nosso segundo exemplo de função no SQL será para remover acentos de textos, evitando assim problemas com caracteres especiais. É importante evitarmos de utilizar acentos e caracteres especiais para garantir a integridade do código.

O processo de criação dessa função será o mesmo que o anterior, com algumas pequenas alterações. Vamos nomeá-la de removeAcentos, ela receberá um único parâmetro do tipo varchar, aceitando até 100 caracteres, e o retorno dela também será do tipo varchar com até 100 caracteres.

A lógica dentro do nosso código será a seguinte, sempre que encontrarmos um caractere acentuado, vamos substituí-lo pela versão sem acento dele.Por exemplo: é para e.

Para isso, vamos utilizar dentro da nossa função, uma outra função padrão do SQL que é a função Replace.

Para que nossa função não fique muito extensa, vamos substituir apenas os caracteres com acento agudo, para o caractere sem acento. Mas você poderia aplicar isso para quantas variações quisesse.

delimiter $$
create function removeAcentos(texto varchar(100))
 returns varchar(100) deterministic
begin
    set texto = replace(texto, 'á', 'a'),
    set texto = replace(texto, 'é', 'e'),
    set texto = replace(texto, 'í', 'i'),
    set texto = replace(texto, 'ó', 'o'),
    set texto = replace(texto, 'ú', 'u');
    return texto;
end $$
delimiter ;

Vamos executar esse código para criar de fato a function e, em seguida, vamos utilizá-la através do comando select.

select  removeAcentos('André');

Removendo acentos do Texto

Como Excluir uma Function no SQL

Caso você não pretenda mais utilizar uma function, ou não faça mais sentido mantê-la, você pode deletá-la.

Basta acessar o seu banco de dados e, na área onde estão listadas as functions, selecionar a function que deseja excluir com o botão direito do mouse e escolher a opção Drop Function.

Drop Function

Em seguida, confirme selecionando a opção Drop Now:

Excluindo função do SQL

Também é possível excluir uma function através do código SQL, utilizando o comando drop function seguido do nome da função que você deseja excluir. Por exemplo:

drop function calculaFaturamento;

Essas são as duas formas que temos para excluir uma function do SQL.

Conclusão – O que é uma Function no SQL – Como criar uma

Nessa aula, eu te ensinei como criar e gerenciar uma function no SQL. Você aprendeu o processo de criar uma function e como aplicá-la dentro das suas consultas no SQL.

As functions tornam os códigos muito mais práticos e eficientes, evitando a repetição de códigos extensos. São uma ótima ferramenta para simplificar e permitir a fácil reutilização desses códigos mais complexos.

Hashtag Treinamentos

Para acessar outras publicações de SQL, clique aqui!


Quer aprender mais sobre SQL com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador