Desvendando SQL: Functions



This content originally appeared on DEV Community and was authored by Cristian Magalhães

Eae gente bonita, tudo bem com vocês? Continuando os posts sobre SQL hoje venho trazer para vocês o que é uma Function e como usa-lá.

O que é

Como o próprio nome diz uma Function é uma função em SQL que podemos declarar e rodar quando quiser, como, por exemplo, em uma trigger. Nesse caso as funções do SQL diferem somente a sintaxe das funções de uma linguagem de programação comum.

Assim como nas linguagens de programação que usamos no dia a dia, o SQL também tem algumas funções pré-definidas como funções de string, data e coisas do tipo.

Como usar

Vamos aprofundar um pouco mais e usar um exemplo bem simples.

CREATE FUNCTION somar(integer, integer) RETURNS integer
AS 'select $1 + $2;'
LANGUAGE SQL
RETURNS NULL ON NULL INPUT;

Aqui podemos ver como funciona a sintaxe de uma função SQL, a sua declaração começa com CREATE FUNCTION ou CREATE OR REPLACE FUNCTION caso você queira substituir uma função já existente no seu banco de dados. Em seguida vem o nome da função e os tipos dos parâmetros passados e também a sua quantidade. É importante observar também que o tipo de retorno é definido logo no início da declaração e esse pode um banco, ou mesmo fazer referência ao tipo de uma coluna em uma tabela.
As funções são definidas dentro do AS e os seus parâmetros são usados o número da posição, que foram declarados $1. Como no exemplo estou usando o PostgreSQL é necessário também informar a linguagem.

Exemplos

Vamos criar uma função simples. No caso abaixo irei criar uma função que lista todos as tarefas de um usuário.

Link com o script para criar o banco de dados aqui.

CREATE OR REPLACE FUNCTION getAllTodos(userId INT)
RETURNS TABLE (
    "title" varchar, 
    "description" TEXT, 
    "status" varchar
)
AS $$
    BEGIN
        RETURN QUERY SELECT
            "t"."title",
            "t"."description",
            "t"."status"
        FROM todos t
        inner join users u on u.id = t.user_id
        where u.id = userId;
    END;
$$ LANGUAGE plpgsql;

Após rodar esse script a função será criada no nosso banco, caso queira apagar e recriar basta rodar:

DROP FUNCTION getAllTodos

Agora vamos rodar a function, para rodar fazemos da seguinte forma:

SELECT * FROM getAllTodos(5)

E então teremos o seguinte resultado:

Image description

Bem simples não é mesmo? Claro que a abordagem desse texto é te dar uma base e ajudar a entender o que é cada coisa para que no futuro você tenha uma base melhor para fazer pesquisas e saber o que e quando deve usar algo. No final do texto vou deixar alguns links com mais detalhes.

Espero ter ajudado, caso tenha alguma dúvida fique a vontade para comentar!

Se chegou até aqui, me segue la nas redes vizinhas.

thank you dog

Fontes:


This content originally appeared on DEV Community and was authored by Cristian Magalhães