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

创建PostgreSQL函数遇42601语法错误,返回false仍报错

解决PostgreSQL函数42601语法错误问题

问题出在你用language sql定义函数,却误用了PL/pgSQL风格的return关键字——SQL类型的函数不需要这个关键字,直接把要返回的查询语句作为函数主体即可。

修正后的代码:

create or replace function patient_age_in_range(patient_id uuid, low integer, high integer) returns bool
    language sql 
    immutable 
    returns null on null input
as $$
select date_part('year', age(birthday)) between low and high from patients where id = patient_id;
$$;

补充说明:

  • SQL函数的逻辑直接由SQL语句构成,无需return关键字;如果要写带return的函数,需要把语言改成plpgsql,同时用begin...end包裹逻辑。
  • 用$$作为函数体的定界符,是PostgreSQL的常用写法,能避免和语句里的单引号冲突。

内容的提问来源于stack exchange,提问作者Pedro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:55:51