Как объявить переменную в результате функции? - PullRequest
0 голосов
/ 24 апреля 2020

В настоящее время я создаю функцию, и мне нужно объявить переменную как результат другой функции в моей main_function .

CREATE OR REPLACE FUNCTION main_function(t_name varchar) 
RETURNS void AS 
$BODY$
DECLARE
    var_1 varchar := execute format('select var_1 from sub_function(%s)' ,t_name);
BEGIN
    --do something with var_1
END;
$BODY$
LANGUAGE plpgsql;

My sub_function возвращает одну строку с тремя столбцами.

select var_1 from sub_function()

возвращает только один результат. Я хотел бы сохранить этот результат в переменной var_1 , потому что она понадобится мне позже. Также важно, чтобы эта sub_function работала с переменной t_name , которую я получил из аргумента main_function . Я пытался сделать это разными способами, например, без функции execute.

var_1 varchar := format('select var_1 from sub_function(%s)' ,t_name);

К сожалению, этот возвращает весь текст "select var_1 from sub_function ('soimething')", а не результат запрос. Что мне делать? Заранее спасибо за любую помощь!

1 Ответ

2 голосов
/ 24 апреля 2020

return_column_name - это столбец, который должна возвращать ваша функция. Я не знаю имени, так как вы сказали, что ваша функция возвращает 3 столбца. К вашему сведению, вы можете получить все три значения, используя select ... into va1, var2, var3

CREATE OR REPLACE FUNCTION main_function(t_name varchar) 
RETURNS void AS 
$BODY$
DECLARE
    var_1 varchar;
BEGIN
    select <return_column_name> from sub_function(t_name)  into var_1;
END;
$BODY$
LANGUAGE plpgsql;

Ссылка на do c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...