PostgreSQL定义带数组参数的函数报42704错误如何解决
错误根因
PostgreSQL 定义数组类型参数时必须明确指定元素类型,不能仅写ARRAY关键字。你写的create function get_total (cols ARRAY)会被解析为“声明元素类型为cols的数组参数”,自然触发type cols[] does not exist报错。
修正方法
你调用时传入的array_agg(ARRAY[stats.value2, stats.value1])生成的是二维bigint数组,对应类型为bigint[][],修改函数参数声明即可,完整正确的函数定义如下:
create function get_total (cols bigint[][]) returns biginteger AS $BODY$ begin -- 此处编写业务逻辑(注意PL/pgSQL单行注释用--,不是//) end; $BODY$ LANGUAGE plpgsql;
补充说明
- 如果后续需要传入一维bigint数组,将参数类型调整为
bigint[]即可,可根据实际需求灵活调整数组维度。 - 函数定义末尾必须指定
LANGUAGE参数,使用过程化逻辑选plpgsql,纯SQL逻辑可选sql。
内容的提问来源于stack exchange,提问作者Jelly
相关产品推荐
相关产品推荐

