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

PostgreSQL:SQL函数如何返回多行?为何当前仅返回单行?

问题原因及解决方法

你的函数返回类型定义为varchar,这是单个字符串类型,PostgreSQL执行时只会提取查询结果的第一行返回,所以调用函数只能拿到单行数据。而直接执行SELECT c_name FROM customers是查询完整的结果集,因此能返回所有行。

修改方案

  • 方案一:返回字符串集合(SETOF varchar)
    修改函数的返回类型为SETOF varchar,这样函数可以返回多行字符串:

    CREATE OR REPLACE FUNCTION get_cust_names()
    RETURNS SETOF varchar AS
    $body$
    SELECT c_name FROM customers;
    $body$
    LANGUAGE SQL
    

    调用方式:

    SELECT * FROM get_cust_names();
    
  • 方案二:返回表结构
    使用TABLE()语法定义返回的表结构,更贴近直接查询的体验:

    CREATE OR REPLACE FUNCTION get_cust_names()
    RETURNS TABLE(c_name varchar) AS
    $body$
    SELECT c_name FROM customers;
    $body$
    LANGUAGE SQL
    

    调用方式同样是:

    SELECT * FROM get_cust_names();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:37:12