我创建了一个函数,它返回一个包含一行和三列的表。
DROP FUNCTION IF EXISTS get_event_deposit_values(INTEGER, date, date);
CREATE OR REPLACE FUNCTION get_event_deposit_values(event_id INTEGER, start_date date, end_date date)
RETURNS TABLE (carried_over INTEGER, current_month INTEGER, deposit INTEGER)
AS $$
DECLARE status INTEGER;
BEGIN
carried_over := 0;
current_month := 0;
deposit := 0;
RETURN QUERY
SELECT carried_over, current_month, deposit;
END
$$ LANGUAGE plpgsql;
在 pgAdmin 中运行一个简单的查询。
select * FROM get_event_deposit_values(20170913, '1999/01/01', '2018/05/11');
它返回三列和一行。
然后,结合主查询运行查询(在网站上看到)。
select t.id from t_events AS t, lateral get_event_deposit_values(t.id, '1999/01/01', '2018/05/11') where id = 20170913;
附近发生错误get_event_deposit_values(t.id
。我正在运行的 PostgreSQL 版本是 8.3,它已经过时了。有没有其他方法可以做到这一点?