Como atribuir o resultado de uma consulta a uma variável no PL / pgSQL, a linguagem processual do PostgreSQL?
Eu tenho uma função:
CREATE OR REPLACE FUNCTION test(x numeric)
RETURNS character varying AS
$BODY$
DECLARE
name character varying(255);
begin
name ='SELECT name FROM test_table where id='||x;
if(name='test')then
--do somthing
else
--do the else part
end if;
end;
return -- return my process result here
$BODY$
LANGUAGE plpgsql VOLATILE
Na função acima, eu preciso armazenar o resultado desta consulta:
'SELECT name FROM test_table where id='||x;
para a variável name
.
Como processar isso?
SELECT test_table.column1, test_table.column2 INTO variable1, variable2 FROM test_table WHERE id = x;
Contanto que você esteja atribuindo uma única variável, você também pode usar a atribuição simples em uma função plpgsql:
Ou use
SELECT INTO
como o @mu já fornecido .Isso também funciona:
Mas é melhor usar um dos dois primeiros, métodos mais claros, como o @Pavel comentou.
Também reduzi a sintaxe com um alias de tabela.
Update: eu removi meu exemplo de código e sugerir a utilização
IF EXISTS()
em vez como fornecido pelo @Pavel .fonte
O padrão usual é
EXISTS(subselect)
:Esse padrão é usado em PL / SQL, PL / pgSQL, SQL / PSM, ...
fonte
Demo:
fonte
Você pode usar o exemplo a seguir para armazenar um resultado da consulta em uma variável usando PL / pgSQL:
fonte