如何解决PostgreSQL函数报错‘query has no destination for result data’?
问题分析与修复方案
你的函数出现query has no destination for result data错误,以及执行异常,主要有以下几个问题:
- 返回类型不匹配:函数声明返回
char,但实际需要返回包含active和active_status两个字段的多行结果集,类型完全不匹配。 - 缺少返回逻辑:在PL/pgSQL中执行SELECT语句时,必须明确指定如何处理查询结果,这里需要用
RETURN QUERY将查询结果返回给调用者,否则数据库不知道如何处理查询出来的数据。 - 拼写错误:CASE语句里的
WHEN O是字母O,应该改为数字0;active _status中间多了空格,正确的字段名是active_status。
修复后的函数代码:
CREATE OR REPLACE FUNCTION active_func() RETURNS TABLE(active int, active_status text) LANGUAGE plpgsql AS $$ BEGIN RETURN QUERY SELECT active, CASE active WHEN 0 THEN 'NO' WHEN 1 THEN 'Yes' END AS active_status FROM customer; END; $$
调用方式:
SELECT * FROM active_func();
内容的提问来源于stack exchange,提问作者zoenjackson
相关产品推荐
相关产品推荐

