Uma FUNCTION é uma rotina armazenada no banco de dados que recebe valores, executa uma lógica e retorna um resultado.
Diferente da Stored Procedure, uma Function sempre retorna um valor e pode ser utilizada diretamente dentro de comandos SQL.
| FUNCTION | STORED PROCEDURE |
|---|---|
| Sempre retorna valor | Pode ou não retornar |
| Pode ser usada em SELECT | Executada com CALL |
| Ideal para cálculos | Ideal para processos |
| Recebe parâmetros | Recebe parâmetros |
DELIMITER //
CREATE FUNCTION nome_funcao()
RETURNS tipo_dado
BEGIN
comandos SQL;
RETURN valor;
END //
DELIMITER ;
DELIMITER //
CREATE FUNCTION dobro(numero INT)
RETURNS INT
DETERMINISTIC
BEGIN
RETURN numero * 2;
END //
DELIMITER ;
Functions podem ser utilizadas dentro de consultas SQL.
SELECT dobro(10);
Resultado:
DELIMITER //
CREATE FUNCTION calcular_desconto(
valor DECIMAL(10,2)
)
RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGIN
RETURN valor * 0.90;
END //
DELIMITER ;
SELECT calcular_desconto(100);
Resultado:
SELECT
nome,
calcular_desconto(preco)
FROM produtos;
A função será aplicada em cada registro retornado.
| Característica | Descrição |
|---|---|
| Retorno obrigatório | Sempre devolve um valor |
| Reutilização | Pode ser chamada várias vezes |
| Organização | Centraliza cálculos |
| Integração | Usada em consultas SQL |
| Tipo | Exemplo |
|---|---|
| INT | Quantidade |
| DECIMAL | Valores financeiros |
| VARCHAR | Textos |
| DATE | Datas |
DROP FUNCTION nome_funcao;
SHOW FUNCTION STATUS;
| Sistema | Uso |
|---|---|
| Financeiro | Cálculo de juros e descontos |
| E-commerce | Cálculo de preços |
| RH | Cálculo de benefícios |
| ERP | Regras de negócio |
| Cuidado | Motivo |
|---|---|
| Functions complexas | Dificultam manutenção |
| Muitos cálculos | Podem afetar desempenho |
| Falta de documentação | Dificulta entendimento |
| Lógica excessiva | Reduz flexibilidade |