我正在使用PL / pgsql创建一个SP:
CREATE OR REPLACE FUNCTION get_performance_achieve (p_month INT,p_year INT,p_uid INT) RETURNS TABLE ( field1 INT,field2 INT ) AS $daTarows$ DECLARE var_r record; BEGIN field1 :=0; field2 :=0; FOR var_r IN(select COUNT(id) as counter from "TABLE_A" ) LOOP field1 := (var_r.counter) ; RETURN NEXT; END LOOP; FOR var_r IN(select COUNT(id) as counter from "TABLE_B" ) LOOP field2 := (var_r.counter) ; RETURN NEXT; END LOOP; END; $daTarows$ LANGUAGE 'plpgsql';
当我执行SP时,它将返回2条记录:
> field1,0
> field1,field2
如何只返回field1,field2的单个记录
解决方法
在这种情况下,循环是多余的,使用简单的赋值:
CREATE OR REPLACE FUNCTION get_performance_achieve (p_month INT,p_uid INT) RETURNS TABLE ( field1 INT,field2 INT ) AS $daTarows$ BEGIN field1 := (select COUNT(id) as counter from "TABLE_A"); field2 := (select COUNT(id) as counter from "TABLE_B"); RETURN NEXT; END; $daTarows$ LANGUAGE 'plpgsql';
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。