存储过程给出错误:查询没有结果数据的目标

时间:2014-04-28 10:23:29

标签: postgresql stored-procedures

我有一个存储过程,如下所示。我总是认为最后一个选择的结果会自动返回,但我收到了这个错误,我不知道为什么,有人可以启发我吗?

    CREATE OR REPLACE FUNCTION pGetPlans() RETURNS TABLE (
    title varchar(16),
    full_cost money,
    subtitle varchar(128),
    blurb varchar(128),
    details varchar(128)[],
    final_str text)
AS $$
DECLARE
full_cost      tplan.cost%TYPE;
current_cost   tplan.cost%TYPE;
amount_saved   tplan.cost%TYPE;
percent_saved  float;
monthly_cost   tplan.cost%TYPE;
one_month_cost tplan.cost%TYPE;
you_save       tplan.cost%TYPE;

BEGIN
    select
        cost
    into
        one_month_cost
    from
        tplan
    where
        is_base = true;

    select
        p.title,
        p.cost,
        p.subtitle,
        p.blurb,
        p.details,
        '1 Month Cost is: ' || one_month_cost::text as final_str
    from
        tplan p
    where
        p.status = 'A';
END;
$$ LANGUAGE plpgsql;

谢谢 Crouz

1 个答案:

答案 0 :(得分:1)

  

我总是会返回最后一个选择的结果   自动

仅适用于使用sql语言编写的函数,而不是plpgsql和其他函数。

Documentation引用:

  

SQL函数执行任意SQL语句列表,返回   列表中最后一个查询的结果。

使用RETURN QUERY SELECT...作为plpgsql中实现相同目标的最后一条指令。