尝试返回 type 的元素数组时出现类型不匹配错误,这是我声明table1
的固有类型。table1
Error occurred during SQL query execution
Razón:
SQL Error [42P13]: ERROR: return type mismatch in function declared to return table1[]
Detail: Actual return type is record[].
Where: SQL function "arrayof_records"
这是一个过度简化的代码,它重现了我的问题。
drop table if exists table1 cascade;
create table table1 (
id serial primary key,
title text,
create_dt timestamp default now()
);
insert into table1 (title) values
('one'),
('two'),
('three');
create or replace function arrayof_records ()
returns table1[]
stable language sql as $$
select array_agg (t.*)
from (
select * from table1
order by create_dt desc
) as t;
$$;
很明显,解析器期望array_agg
函数中有其他表达式。我试过了 t
,t.*
和*
。他们都失败了。
我希望有一种语法,因为 PostgreSQL 12 文档声明“array_agg(expression)|any non-array type”。
任何的想法?