You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL集合返回函数完整列表查询及升级问题咨询

如何找到PostgreSQL的集合返回函数列表

从系统表查询权威列表

information_schema.routines确实没有直接标识集合返回函数的字段,你需要查询PostgreSQL的底层系统表pg_proc,其中proretset字段专门标记函数是否返回集合(true表示是集合返回函数)。

如果要查询所有内置集合返回函数(即pg_catalog命名空间下的函数),可以用以下SQL:

SELECT proname AS function_name,
       pg_get_function_arguments(oid) AS arguments,
       pg_get_function_result(oid) AS return_type
FROM pg_proc
WHERE proretset = true
  AND pronamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'pg_catalog')
ORDER BY proname;

如果要查询所有自定义+内置的集合返回函数,去掉AND pronamespace = ...这一行即可。

官方文档中的列表

PostgreSQL官方文档里有专门的集合返回函数章节,位置在「函数和操作符」大章节下的「集合返回函数(Set-Returning Functions)」小节。这个小节会按类别(比如数组、JSON、序列生成等)列出所有内置的集合返回函数,包含你提到的jsonb_object_keys、json_array_elements_text,还有常用的unnest、generate_series等。

关于CASE表达式的问题补充

你遇到的PG10+限制集合返回函数在CASE中使用的问题,是因为旧版本的行为存在语义歧义,官方在升级时做了破坏性修正。现在需要用LATERAL子查询来替代这种写法,比如将原本在CASE中的集合返回逻辑移到FROM子句的LATERAL关联里。

内容的提问来源于stack exchange,提问作者James Webster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 01:06:20