Postgres:如何创建返回setof类型的重载函数

时间:2018-03-12 09:42:27

标签: postgresql function

我已经定义了一个函数:

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

我想创建一个这个函数的重载版本,它将接受一个match_input对象:

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

1 个答案:

答案 0 :(得分:3)

在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;