PostgreSQL函数编写遇语法错误:IF附近报错求修正方案
PostgreSQL函数语法错误修正
你的函数语法错误源于RETURN QUERY的位置不符合PL/pgSQL规范——RETURN QUERY必须直接跟随要返回的查询语句,不能放在IF块外部。正确的写法是在IF的每个分支内分别使用RETURN QUERY来返回对应逻辑的查询结果。
修正后的完整函数代码:
CREATE OR REPLACE FUNCTION dbo.get_managing_owner(p_imo integer, p_charter_id integer) RETURNS TABLE(managing_owner character varying) LANGUAGE plpgsql AS $function$ BEGIN IF p_charter_id = 0 THEN RETURN QUERY SELECT managing_owner from dbo.vessel where imo=p_imo union SELECT managing_owner from dbo.charter c where imo=p_imo; ELSE RETURN QUERY SELECT managing_owner from dbo.vessel v inner join dbo.charter c2 on v.imo =c2.imo where c2.id =p_charter_id union SELECT managing_owner from dbo.charter c where id=p_charter_id; END IF; END; $function$ ;
内容的提问来源于stack exchange,提问作者Niranjan
相关产品推荐
相关产品推荐

