Como fazer uma função no mysql?
função mysql
Veja abaixo como fazer, chamar, apagar e alguns complementos conceituais sobre function no mysql.
Sinstaxe básica
DELIMITER $$
CREATE FUNCTION nome_da_funcao (parametros)
RETURNS tipo_do_valor_retornado
corpo_da_funcao
RETURN
valor_retornado
$$
DELIMITER ;
Obs.: Na sintaxe usei o formato snake_case para os termos que serão declarados, pois é o padrão usado nas nomenclaturas do banco de dados, mas no detalhamento não, para facilitar a leitura. se quiser clique aqui e veja como é usado o padrão snake_case para entender melhor.
Detalhando a sintaxe
Termos padrões ou palavras reservadas
DELIMITER
Serve para indicar o final do conjunto de instruções.
CREATE FUNCTION
Cria a função.
Ele pode ser acompanhado de OR REPLACE para evitar erro caso a função já tenha sido declarada e faz alteração na mesma.
RETURNS
Aqui é declarado o tipo de retorno.
BEGIN e END ou RETURN
Nessa parte é declarado o valor retornado.
Quando é usado BEGIN antes do corpo da função e END no final não precisa se declarar o RETURN, pois o sistema interpreta o campo definido na expresão.
Quando for usado RETURN qualquer instrução após ele será ignorada.
Termos criados ou nomenclaturas próprias
Nome da função
São os termos pelo qual a função armazenada será invocada.
Dica extra: No nome é interessante usar o prefixo com fn_ para identificar que se trata de uma função.
Parâmetros
são as informações que serão usadas na function como entradas de variáveis para quem vem de alguma linguagem de programação.
Os parenteses "()" que recebem os parâmetros devem estar sempre presentes, mesmo que não tenha informação.
Em uma função de banco de dados eles são como uma cláusula IN apenas.
Também são chamados de argumentos e podem receber várias informações.
Os nomes são case insensitives ou seja uma letra maiúscula é igual a ela minuscula ('A' == 'a').
Tipo de Retorno
É o tipo de valor que será retornado.
Pode ser qualquer tipo de dado existente no MySQL.
Se o valor retornado for diferente do declarado ele é forçado para o valor do RETURNS. Por exemplo se for declarado o tipo como varchar, mas a consulta pede um id inteiro esse id será tranformado em string, no caso id = 10 ficará id="10".
Corpo da função
Pode ser qualquer expressão SELECT SQL válida.
Ela deve retornar apenas um valor, por isso deve ser usado limit 1 na expressão para evitar o erro 1242 que ocorre quando retorna mais de uma linha e apenas um campo pois o erro 1241 aparece quando a expressão tem mais de uma coluna.
Sintaxe Completa
CREATE [OR REPLACE]
[DEFINER = {user | CURRENT_USER | role | CURRENT_ROLE}]
FUNCTION [IF NOT EXISTS] func_name ([func_parameter[,...]])
RETURNS type
[characteristic ...]
RETURN func_body
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic:
LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'
Como chamar uma Função?
Para usar a função basta declarar o nome dela e os parâmetros entre parenteses, como no exemplo abaixo:
SELECT nome_da_funcao(parametros) ...
Exemplo 1
CREATE FUNCTION multiplicacao_simples(a DECIMAL(6,2), b DECIMAL(6,2))
RETURNS DECIMAL(6,2)
RETURN a * b;
Chamando a função:
SELECT multiplicacao_simples(1.5, 3) AS resultado;
Nesse caso resultado seria igual 4.5.
Explicando o exemplo 1
Na função multiplicacao_simples() é feito a multiplicação de dois valores decimais.
Exemplo 2
CREATE FUNCTION calculo_desconto(valor DECIMAL(6,2), qtd int, desconto decimal(4,2))
RETURNS DECIMAL(6,2)
BEGIN
valor * qtd - ((valor * qtd/100)*desconto);
END;
Chamando a função:
SELECT codigo, descricao, preco, calculo_desconto(preco, qtd, desconto) AS valor_com_desconto from venda;
Explicando o exemplo 2
Na função calculo desconto são pegos os valores da tabela e feito o calculo para chegar no valor que será subtraído.
Como deletar uma função no mysql?
Para excluir uma função pode ser usado o comando DROP FUNCTION, como mostrado na sintaxe abaixo:
DROP FUNCTION nome_função;
Complementos conceituais
O que é uma função?
As funções ou functions (termo em inglês) são operações usadas para trabalharem informações e retornarem valores no mysql. Elas ficam armazenadas no banco de dados e recebem parâmetros quando são chamadas.
Para que serve uma função no mysql?
São usadas para expressões matemáticas por exemplo.
A função serve para todo MySQL ou para cada base de dados?
Por padrão a função fica associada ao MySQL para usá-la em um banco de dados específico declare o nome da base com a função, por exemplo: nome_do_banco.nome_da_funcao.
Segurança
Quais permissões são necessárias para criar um function?
Você deve possuir o privilégio CREATE ROUTINE para usar CREATE FUNCTION.
Veja mais
Quais as funções nativas do mysql?
Quais, o que são e para que servem as funções de agregação do mysql?
O que são funções em programação?
O que é function em banco de dados?
Como usar arrow function em javascript?
Qual a diferença entre trigger, function e procedure?
Como fazer funções matemáticas no mysql?
Qual a diferença de MySQL para MariaDB?
O que é stored function?
Como usar o Workbench?
Por que usar o MySQL?
Como fazer para conectar o MySQL Workbench?
Quais empresas usam MySQL?
Qual a versão do MySQL?
Quanto custa licença MySQL?
Tem mais conteúdo para inserir na página e precisa colorir os códigos.
Leia mais em: ww.mysql.com/