Jak przypisać wynik zapytania do zmiennej w PL / pgSQL, języku proceduralnym PostgreSQL?
Mam funkcję:
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
W powyższej funkcji muszę zapisać wynik tego zapytania:
'SELECT name FROM test_table where id='||x;
do zmiennej name
.
Jak to zrobić?
SELECT test_table.column1, test_table.column2 INTO variable1, variable2 FROM test_table WHERE id = x;
Dopóki przypisujesz pojedynczą zmienną, możesz również użyć zwykłego przypisania w funkcji plpgsql:
Lub użyj
SELECT INTO
jak @mu już dostarczone .To też działa:
Ale lepiej użyj jednej z pierwszych dwóch, jaśniejszych metod, jak skomentował @Pavel.
Skróciłem dodatkowo składnię o alias tabeli.
Aktualizacja: usunąłem mój przykładowy kod i sugeruję użycie
IF EXISTS()
zamiast tego, jak zapewnia @Pavel .źródło
Typowy wzór to
EXISTS(subselect)
:Ten wzorzec jest używany w PL / SQL, PL / pgSQL, SQL / PSM, ...
źródło
Próbny:
źródło
Możesz użyć następującego przykładu, aby zapisać wynik zapytania w zmiennej przy użyciu PL / pgSQL:
źródło