【发布时间】:2019-11-24 09:38:24
【问题描述】:
我有两个表,有不同的列,我必须创建一个函数,当列年份与给定年份匹配时,用第一个表的信息更新第二个表,并将所有表分组到性别组中。
我在这里放了我的代码,但我不知道它是否可以,因为 pgAdmin4 由于 $$ 符号而返回错误,尽管我正在尝试解决它。
BEGIN WORK;
CREATE OR REPLACE FUNCTION update_report(p_year INTEGER)
RETURNS SETOF report1 AS $$
DECLARE report report1;
BEGIN
UPDATE report1 SET m.num=t_num, m.na=t_na, m.nd=t_nd, m.birth=t_birth
FROM report2 m
FULL JOIN report1
ON p_year= m.year
GROUP BY m.gender);
--In case there are any film in the specified year
IF NOT FOUND THEN
RAISE EXCEPTION ‘’%: No film exists in this year’’, -746;
END IF;
RETURN report;
END;
$$ LANGUAGE plpgsql;
COMMIT WORK;
有人可以告诉它是否可以吗?谢谢
【问题讨论】:
-
没有任何聚合的
group by绝对是错误的。然后你有一个流浪的)。这是我可以看到的明显的语法错误 -
因为我之前声明了report1而创建了一个交叉连接?
标签: sql postgresql plpgsql stored-functions