我有一个存储过程,如下所示。我总是认为最后一个选择的结果会自动返回,但我收到了这个错误,我不知道为什么,有人可以启发我吗?
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
答案 0 :(得分:1)
我总是会返回最后一个选择的结果 自动
仅适用于使用sql
语言编写的函数,而不是plpgsql
和其他函数。
SQL函数执行任意SQL语句列表,返回 列表中最后一个查询的结果。
使用RETURN QUERY SELECT...
作为plpgsql
中实现相同目标的最后一条指令。