Как присвоить результат запроса переменной в PL / pgSQL, процедурном языке PostgreSQL?
У меня есть функция:
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
В приведенной выше функции мне нужно сохранить результат этого запроса:
'SELECT name FROM test_table where id='||x;
к переменной name
.
Как это обработать?
SELECT test_table.column1, test_table.column2 INTO variable1, variable2 FROM test_table WHERE id = x;
Пока вы назначаете одну переменную, вы также можете использовать простое присвоение в функции plpgsql:
Или использовать
SELECT INTO
как @mu уже предусмотрено .Это тоже работает:
Но лучше использовать один из первых двух, более четких методов, как прокомментировал @Pavel.
Я дополнительно сократил синтаксис с помощью псевдонима таблицы.
Обновление: я удалил свой пример кода и предлагаю использовать
IF EXISTS()
вместо него, как предоставлено @Pavel .источник
Обычный паттерн
EXISTS(subselect)
:Этот шаблон используется в PL / SQL, PL / pgSQL, SQL / PSM, ...
источник
Демо-версия:
источник
Вы можете использовать следующий пример, чтобы сохранить результат запроса в переменной с помощью PL / pgSQL:
источник