MySQL – Rotinas Armazenadas – Funções (CREATE FUNCTION)

Rotinas Armazenadas – Funções (CREATE FUNCTION) em MySQL

Nesta lição vamos dar início ao estudo de Rotinas Armazenadas em MySQL. Uma Rotina Armazenada é um subprograma que pode ser criado para efetuar tarefas específicas nas tabelas do banco de dados, usando comandos da linguagem SQL e Lógica de Programação.

Funções e Procedimentos

São dois tipos de rotinas armazenadas, parte da especificação SQL. As Funções e Procedimentos são um pouco similares, porém possuem aplicações diferentes.

São invocadas de formas diferentes também (CALL x declaração). Nesta lição vamos falar especificamente sobre Funções, e na próxima lição iremos abordar os Procedimentos Armazenados (Stored Procedures).

Funções

Uma função é usada para gerar um valor que pode ser usado em uma expressão. Esse valor é geralmente baseado em um ou mais parâmetros fornecidos à função. As funções são executadas geralmente como parte de uma expressão.

O MySQL possui diversas funções internas que o desenvolvedor pode utilizar, e também permite que criemos nossas próprias funções, e é isso que mostraremos como fazer agora.

Sintaxe para criação de uma Função

CREATE FUNCTION nome_função (parâmetros)
RETURNS tipo_dados
código_da_função;

Como invocar (chamar) uma Função:

SELECT nome_função(parâmetros);

Exemplo de aplicação de uma função. Vamos criar uma função que recebe dois valores numéricos e retorna o resultado da multiplicação entre eles:

Criando a função:

CREATE FUNCTION fn_teste (a DECIMAL(10,2), b INT)
RETURNS INT
RETURN a * b;

Invocando a função:

SELECT fn_teste(2.5, 4) AS Resultado;

Exemplo 02 – Usando o banco de dados de testes db_biblioteca. Vamos criar uma função que consulte um livro a partir de seu código e retorne o preço total de 6 unidades desse livro:

SELECT Nome_Livro, fn_teste(Preco_Livro, 6) AS ‘Preço de 6 unidades’
FROM tbl_Livro
WHERE ID_Livro = 2;

Exemplo 03 – Crie uma função que mostre a mensagem “O preço do livro XXX é R$ YYY” para os livros do banco de dados, consultados pelo seu ID (XXX é o nome do livro, e YYY o seu preço):

CREATE FUNCTION fn_verPreço (a SMALLINT)
RETURNS VARCHAR(60)
RETURN
(SELECT CONCAT('O preço do livro ', Nome_Livro, ' é ', Preco_Livro)
FROM tbl_livro
WHERE ID_livro = a);

Testando a função com o livro de código 9:

SELECT fn_verPreço(9);

Excluindo uma função

Para excluir uma função usamos o comando DROP FUNCTION, de acordo com a sintaxe a seguir:

DROP FUNCTION nome_função;

É isso aí! Assista agora a um vídeo que explica como usar as funções criadas pelo usuário no MySQL:

Sobre Fábio dos Reis (1194 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

9 Comentários em MySQL – Rotinas Armazenadas – Funções (CREATE FUNCTION)

  1. O “a” seria o que?

  2. CLAUDINEIA APARECIDA BALDOINO SANTOS // 23/09/2019 em 11:10 // Responder

    O “a” no exemplo 3 seria o que?

  3. Primeiramente, gostaria de lhe parabenizar pelas aulas! Seus conteúdos são excelentes, tanto o conteúdo teórico quanto os exemplos práticos! Muito obrigada por partilhar seu conhecimento de forma tão clara e objetiva!
    No caso desse exemplo, onde consigo o banco “livros do banco de dados” para executar o exemplo 3?

  4. manoel vitor // 15/12/2019 em 22:19 // Responder

    muito grato, pelo conteúdo excelente desse site.

  5. Fatah rasherahe // 05/12/2020 em 19:05 // Responder

    como alterar a funçao amigo?

  6. Roberto Marcos // 22/07/2022 em 11:24 // Responder

    como criar uma função interna mysql que retorne um registro(uma linha), ou todas as linhas de uma tabela?

Escreva um comentário

Seu e-mail não será divulgado


*