我定义了一个函数:

create or replace function get_matches(_mia match_input[])
returns setof contact_index

我要创建此函数的重载版本,它将接受一个匹配的输入对象:
create or replace function get_matches(_mi match_input)
returns setof contact_index
as $func$
begin
  select get_matches(array[_mi]);
end
$func$
language plpgsql strict;

它编译得很好,但运行时会出现以下错误:
ERROR:  query has no destination for result data

最佳答案

在PL/pgSQL函数中,需要使用return query

create or replace function get_matches(_mi match_input)
  returns setof contact_index
as $func$
begin
  return query select get_matches(array[_mi]);
end
$func$
language plpgsql
strict;

或者改用SQL函数:
create or replace function get_matches(_mi match_input)
  returns setof contact_index
as $func$
  select get_matches(array[_mi]);
$func$
language sql
strict;

关于postgresql - Postgres:如何创建返回setof类型的重载函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49232106/

10-12 16:19