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

PostgreSQL创建斐波那契函数报SQL state 42601: $分隔字符串未结束

PostgreSQL plpgsql斐波那契函数$分隔符报错修复方案

你编写的函数语法本身没有问题,报错「$分隔的字符串未结束」的核心原因是数据库没有匹配到与开头$$对应的结束标记,常见触发场景及修复方法如下:

  • 执行端未开启多行语句支持
    大部分SQL客户端默认按行拆分提交语句,执行到as $$行时就会将不完整的片段发给数据库,找不到配对的结束$$。开启客户端的「整块执行/多行语句支持」配置后,全选整个函数语句提交即可。
  • 运行环境不支持美元符引用
    部分低版本PostgreSQL或封装的执行环境对$$美元符引用语法支持异常,可以替换为单引号包裹函数体,你当前的函数体内无单引号,无需额外转义,修改后的可执行语句如下:
create or replace function fibonacci(int) returns int 
as '
declare
    a int;
    res int := 0;
begin
    a := $1;
    if(a = 1 or a = 2) then
        res :=1;
    else
        res := fibonacci(a - 2) + fibonacci(a - 1);
    end if;
    return res;
end;
'
language plpgsql;
  • 标记存在异常字符
    检查前后两处$$是否为半角英文符号,有没有混入全角符号、不可见空格、注释字符,确保两处标记完全匹配且无多余字符干扰。
  • psql命令行变量替换冲突
    如果你在psql命令行中执行操作,开启变量自动替换的情况下$会被识别为变量前缀,可先执行\set OFF关闭变量替换,再提交函数创建语句。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:54:02