Postgresql函数

Postgresql函数,sql,postgresql,plpgsql,Sql,Postgresql,Plpgsql,这些是提供给我的类型定义 create type IR as (pattern_number integer, uoc_number integer); 我目前的进展是: create or replace function q1(pattern text, uoc_threshold integer) returns setof IR as $$ BEGIN RETURN QUERY select count(code) from temp where code

这些是提供给我的类型定义

create type IR as (pattern_number integer, uoc_number integer);
我目前的进展是:

create or replace function q1(pattern text, uoc_threshold integer)
  returns setof IR
  as $$
  BEGIN
    RETURN QUERY
    select count(code) from temp where code like $1;
    RETURN QUERY 
    select count(code) from temp where code like $1 and uoc > $2;

  END;
$$ language plpgsql;
我的输出需要如下所示: 问题:-

我得到一个错误,说:

错误:查询的结构与函数结果类型不匹配 详细信息:返回的类型bigint与第1列中的预期类型integer不匹配。 上下文:PL/pgSQL函数q1text,返回查询时的整数行3

如何解决此问题?

这是您想要的吗

create or replace function q1(pattern text, uoc_threshold integer)
  returns setof IR
  as $$
  BEGIN
    RETURN QUERY
    select (select count(code) from temp where code like $1)::integer
    ,(
    select count(code) from temp where code like $1 and uoc > $2)::integer;

  END;
$$ language plpgsql;

函数返回两行和一个bigint列。你想要一行一列的记录,对吗?您需要从临时位置代码中选择countcode(如$1)作为模式编号,并从临时位置代码中选择countcode(如$1和uoc>$2作为uoc\U编号?)?。。我用代码-sic?@VaoTsun-Yes添加了答案。这正是我想要的,但你的回答似乎无法解决错误。你说得对,但错误仍然存在。这是同样的错误。
create or replace function q1(pattern text, uoc_threshold integer)
  returns setof IR
  as $$
  BEGIN
    RETURN QUERY
    select (select count(code) from temp where code like $1)::integer
    ,(
    select count(code) from temp where code like $1 and uoc > $2)::integer;

  END;
$$ language plpgsql;