sql - PostgreSQL调用函数返回带有表和附加列的记录集
问题描述
我正在尝试调用一个函数,返回现有表的所有列+一些不相关的附加列,并使用以下语法检索返回的数据:
select *
from test_func(...)
as (a_table my_table_name, rows_count numeric);
该函数具有以下格式:
CREATE OR REPLACE FUNCTION public.test_func(...)
RETURNS SETOF record
LANGUAGE plpgsql
AS $function$
DECLARE
_sql VARCHAR;
begin
_sql := 'SELECT mtn.*, count(*) over() as rows_count
from public.my_table_name mtn
... inner joins and other stuff';
return query
execute _sql using ..._sql params...;
END;
$function$
;
但是,它不起作用。我收到的错误:
ERROR: structure of query does not match function result type
Detail: Returned type numeric does not match expected type "my_table_name" in column 1.
解决方案
如果你的函数中的查询应该返回一个my_table_name
(一个“整行引用”),你应该把它写成
SELECT mtn, count(*) OVER () ...
推荐阅读
- apache-flink - Flink 大尺寸/小提前滑动窗口性能
- javascript - 如何从日期选择器中排除前一个日期
- scala - 如何使用 Numeric[T] 表示任何数字类型的零
- php - Laravel whereDate 用户时区
- c++ - 自动化测试不出现在会话前端。虚幻引擎
- datetime - ColdFusion:使用 UTC 创建日期时间
- matlab - 8-PSK 调制星座“未定义变量 hmod”
- vba - 在 PowerPoint 幻灯片中运行宏不会运行,除非先手动完成
- python - 您如何比较并返回两个不同二维列表中的重复项?
- r - 如何将对象转换为 data.frame?