postgresql 函数返回多列

标签 postgresql plpgsql

我对在 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)

error: function returns two columns.

类型有问题吗?我该如何解决?

最佳答案

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

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

关于postgresql 函数返回多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43724183/

相关文章:

sql - Postgres 9.4 的中位数 - 为什么我的代码不工作?

database - 编写一个 postgresql 查询,返回以 'sa' 开头并以 's' 结尾的名称列表

sql - 返回多列的 plpgsql 函数被多次调用

postgresql - 如何在 PostgreSQL 中克隆记录

oracle - 将 Oracle PL/SQL 转换为 Postgresql PL/pgSQL 的工具

sql - 如何获得符合 PostgreSQL 标准的行的百分比?

java - Micronaut 数据原生图像 : No bean of type [io. micronaut.data.operations.PrimaryRepositoryOperations] 存在

PostgreSQL:是否可以手动构建 tsvector 值?

sql - 滚动平均postgres

sql - 从函数返回多个 ID 并在查询中使用结果