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
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:
O “a” seria o que?
O “a” no exemplo 3 seria o que?
É a variável declarada no início da função (a SMALLINT), qual recebe o valor passado ao executar a consulta.
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?
muito grato, pelo conteúdo excelente desse site.
Eu é que agradeço Manoel!
como alterar a funçao amigo?
Use a declaração ALTER FUNCTION, como descrito aqui:
https://dev.mysql.com/doc/refman/5.7/en/alter-function.html
como criar uma função interna mysql que retorne um registro(uma linha), ou todas as linhas de uma tabela?