Вернуть результат выбора отдельного запроса внутри функции - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть некоторый код, который берет имя и выводит различные его варианты, ie Майкл и Майк. Запрос работает нормально, как это:

with recursive v(text) as (
        LOGIC REMOVED
)
select distinct(text) from v;

и возвращает что-то вроде этого:

    text    
------------
 john jim
 john james

Я пытаюсь упаковать это в функцию, но изо всех сил пытаюсь вернуть два значения в виде набора текста. Вот что у меня есть:

begin;
create or replace function variant_generator(orig_name text) returns setof text as
$$
begin
with recursive v(text) as (
        LOGIC REMOVED
)
return query (select distinct(text) from v);
end;
$$ language plpgsql;

Кто-нибудь может посоветовать, что я должен сделать, чтобы вернуть это как положено?

1 Ответ

1 голос
/ 25 февраля 2020

Используйте returns table и language sql:

create or replace function variant_generator(orig_name text) 
  returns table ("text" text)
as
$$
with recursive v(text) as (
    LOGIC REMOVED
)
select distinct text 
from v;
$$ 
language sql;

С PL / pg SQL (в этом нет необходимости) вам нужно будет написать return query перед Завершить запрос - перед предложением WITH:

$$
begin
  return query 
    with recursive v(text) as (
        LOGIC REMOVED
    )
    select distinct text 
    from v;
end;
$$ language plpgsql;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...