PostgreSQL函数返回多列



我对来自Postgres中创建的函数的参数的传递过程感到困惑:

create type IncorrectRecord as (pattern_number integer, uoc_number integer);
create or replace function text1(pattern text, uoc_threshold integer) 
    returns  setof IncorrectRecord
as $$
begin
return next count(v1.code) as pattern_number, count(v2.code) as uoc_number
from (select * from q1_1 where code like pattern) as v1, (select
 * from q1_1 where code like pattern and uoc > uoc_threshold) as v2;
return;
end
$$ language plpgsql;

我修改了一些,没有参数错误,但仍然不起作用。当我用

测试
select * 
from test1('ECO%', 8)

错误:功能返回两列。

类型有什么错?我该如何修复?

正如消息所说,您要返回两列。返回复合类型:

return next (
    count(v1.code) as pattern_number, count(v2.code) as uoc_number
)::IncorrectRecord

最新更新