Desvendando SQL: Functions
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: Utilização de Functions no PostgreSQL How to write and use a function on PostgreSQL Database

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.