You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 20:32:39