微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

postgresql – PL / pgSQL – 从FUNCTION返回单个记录

我正在使用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] 举报,一经查实,本站将立刻删除。

相关推荐