Atribuir mais de uma variável no mesmo SQL – PL/pgSQL

Por esses dias precisei criar uma função no Postgres, e em determinada parte precisei popular duas variáveis de uma mesma query. Porém, não queria executar esta mesma query duas vezes para popular minhas variáveis.

Usualmente seria:

CREATE OR REPLACE FUNCTION funcao(codigo integer)
RETURNS SETOF character varying AS
$BODY$
DECLARE
variavel int;
variavel2 int;
BEGIN

--ATRIBUINDO A VARIÁVEL 1
select into variavel campo_tabela from tabela where campo = codigo;

--ATRIBUINDO A VARIÁVEL 2
select into variavel2 campo_tabela2 from tabela where campo = codigo;

END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION funcao(integer)
OWNER TO postgres;

Para popular várias de uma só vez, basta trazer as variáveis e em seguida na mesma ordem os campos das tabelas:

...
select into variavel, variavel2
campo_tabela, campo_tabela2
from tabela
where campo = codigo;
...

Até…

Anúncios