Neste capítulo



Introdução

Até agora, nossa interação com o banco de dados tem sido baseada em comandos SQL diretos. No entanto, para construir sistemas robustos e eficientes, é essencial ir além e utilizar a capacidade do PostgreSQL de encapsular lógicas complexas e automatizar tarefas. O uso de funções e a execução de scripts são a chave para reutilizar código, garantir a consistência de regras de negócio e melhorar a performance. Este capítulo explora como você pode ir além das consultas e programar dentro do seu banco de dados.


Uso de Funções Embutidas

O PostgreSQL possui uma vasta biblioteca de funções pré-definidas (embutidas) que podem ser usadas diretamente em suas consultas SELECT, WHERE, ORDER BY, etc. Elas facilitam a manipulação de dados sem a necessidade de processamento adicional na sua aplicação.


Introdução à Criação de Funções (CREATE FUNCTION)

Além das funções embutidas, você pode criar suas próprias funções personalizadas para encapsular lógicas de negócio complexas. Uma função definida pelo usuário é um bloco de código que aceita parâmetros, executa um conjunto de comandos SQL e retorna um resultado.

A sintaxe básica para criar uma função é:

CREATE OR REPLACE FUNCTION nome_da_funcao(parametro1 tipo, parametro2 tipo, ...)
RETURNS tipo_de_retorno AS $$
BEGIN
    -- Lógica da função aqui
    -- RETURN resultado;
END;
$$ LANGUAGE plpgsql;

Exemplo Prático: Criar uma função para calcular o valor total de um pedido, incluindo uma taxa de serviço.

CREATE OR REPLACE FUNCTION calcular_total_pedido(id_do_pedido INT)
RETURNS DECIMAL AS $$
DECLARE
    total_pedido DECIMAL;
BEGIN
    SELECT valor_total INTO total_pedido FROM pedidos WHERE id_pedido = id_do_pedido;

    RETURN total_pedido * 1.05; -- Adiciona 5% de taxa de serviço
END;
$$ LANGUAGE plpgsql;

Como usar a função:

SELECT calcular_total_pedido(1);