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

PostgreSQL存储过程调用无返回结果问题求助

问题原因

PostgreSQL里用SQL语言写的PROCEDURE(存储过程)执行SELECT语句时,不会自动把查询结果返回给调用方,这就是你调用后提示成功但看不到数据的原因。PROCEDURE原本更适合做INSERT/UPDATE/DELETE这类修改操作,要是需要返回查询结果,用FUNCTION(函数)更合适。

解决方案一:改用FUNCTION(推荐)

把原来的存储过程改成FUNCTION,定义返回类型为SETOF aeroplanes,这样执行函数就能直接拿到结果:

CREATE OR REPLACE FUNCTION search_airplane_name(name_param varchar)
RETURNS SETOF aeroplanes
LANGUAGE sql
AS $$
SELECT * FROM aeroplanes
WHERE name = name_param;
$$;

调用的时候用SELECT语句:

SELECT * FROM search_airplane_name('saab');
解决方案二:用PL/pgSQL写PROCEDURE并返回结果

如果一定要用PROCEDURE,可以换成PL/pgSQL语言编写,通过RETURN QUERY返回结果:

CREATE OR REPLACE PROCEDURE search_airplane_name(name_param varchar)
LANGUAGE plpgsql
AS $$
BEGIN
    RETURN QUERY SELECT * FROM aeroplanes WHERE name = name_param;
END;
$$;

调用时需要在PGAdmin里开启**“显示隐式结果”**(默认可能没开):点击查询工具顶部的Query菜单,选择Show Implicit Results,之后再执行CALL search_airplane_name('saab');就能看到返回的数据了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:00:04