Manual MyTable

MySQL • Funções (Functions)

As funções (stored functions) encapsulam regras de negócio que retornam um valor. Diferente de procedures, as funções são chamadas dentro de consultas (SELECT minha_funcao(...)), WHERE, ORDER BY e até em DEFAULT (quando permitido). Aqui você pode listar, ver definição, criar, editar e excluir funções no MySQL.


Abrir a área de Funções

  1. Conecte-se à sua conexão MySQL e selecione o banco.
  2. Na árvore, expanda Funções (Functions) para listar as existentes.
  3. Toque em uma função para ver a definição (DDL) e informações como retorno e parâmetros.

Criar função

  1. Na seção Funções, toque em Criar Função.
  2. Informe:
    • Nome da função (sem espaços/acentos).
    • Parâmetros (nome e tipo, ex.: p_id INT).
    • Tipo de retorno (ex.: INT, DECIMAL(10,2), VARCHAR(100), DATE).
    • Corpo (SQL/expressão) que calcula o valor.
    • Deterministic / Reads SQL Data / Modifies SQL Data (quando aplicável).
  3. Revise e toque em Criar.

Dica: Valide a lógica antes no Editor SQL com consultas de teste.


Editar (alterar) função

  • Abra a função, toque em Editar e ajuste parâmetros, tipo de retorno ou o corpo.
  • Confirme em Salvar. Em geral, a alteração recria a função (CREATE OR REPLACE quando suportado).

Excluir função

  1. Selecione a função na lista.
  2. Toque em Excluir e confirme.

Atenção: consultas, views, triggers e aplicações que chamam a função podem quebrar após a exclusão.


Usar a função nas consultas

  • SELECT: SELECT minha_funcao(coluna) FROM tabela LIMIT 50;
  • Filtros: ... WHERE minha_funcao(x) > 0 (cuidado com performance).
  • Ordenação: ORDER BY minha_funcao(x) (use somente quando necessário).

Performance: funções em WHERE/ORDER BY podem impedir uso de índices. Prefira calcular em colunas auxiliares ou usar expressões indexáveis.


Boas práticas

  • Mantenha funções puras (sem efeitos colaterais) sempre que possível.
  • Documente finalidade, parâmetros e exemplos de uso na própria definição (comentário) e no catálogo interno.
  • Evite lógica pesada em funções chamadas linha a linha; considere pré-processamentos.
  • Teste em homolog e acompanhe consumo/tempo em produção.

Erros comuns (e soluções)

“Permissão negada para criar/alterar função”

  • É preciso privilégio CREATE ROUTINE/ALTER ROUTINE/DROP ROUTINE e permissões nas tabelas lidas.

“Função com mesmo nome já existe”

  • Renomeie a nova função ou exclua/recrie com CREATE OR REPLACE quando suportado.

“Tipo de retorno incompatível”

  • Ajuste o RETURNS para refletir o valor produzido (ex.: de INT para DECIMAL ao trabalhar com frações).

“Função deixa a consulta lenta”

  • Evite chamar a função em cada linha de tabelas enormes. Pré-calcule, use índices e filtre antes de aplicar a função.

Ferramentas relacionadas

Próximo: MySQL • Engines • Voltar: MySQL • Triggers