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 (1278 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica 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

Escreva um comentário

Seu e-mail não será divulgado


*