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:
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.
Fontes:
This content originally appeared on DEV Community and was authored by Cristian Magalhães