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

Cro*_*les 1 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;
Run Code Online (Sandbox Code Playgroud)

谢谢克鲁兹

Dan*_*ité 5

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

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

文档引用:

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

使用RETURN QUERY SELECT...的最后一个指令,实现在同一个plpgsql