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

执行DO命令时报ERROR: syntax error at end of input错误

错误产生原因

你这段是PostgreSQL环境下执行的PL/pgSQL代码,报错来自3个核心问题:

  • 块结构不完整:DO $$ ... $$ 包裹的PL/pgSQL代码块,必须用END;标记块结束,你当前代码在end loop;之后直接结束了块定义,缺失了最外层块的闭合标识,属于基础语法错误。
  • 函数不兼容:你调用的dateadd()是SQL Server、Sybase等数据库的内置日期计算函数,PostgreSQL原生不提供这个函数,直接调用会触发「函数不存在」的报错。PG中实现日期按天偏移不需要调用专用函数,直接用日期加间隔的运算语法即可。
  • 冗余逻辑与类型风险:循环内部额外包裹的begin...end块没有添加任何异常处理逻辑,属于无效嵌套,不会直接触发报错但无实际作用;另外你原本定义的起始日期变量被注释掉了,硬编码的日期字符串没有做显式类型转换,容易触发隐式类型转换异常。
修正后可运行代码
-- 建表语句
create table if not exists test_calendar (test_date date primary key);

do $$
declare
    i INTEGER := 0;
    start_date date := '2009-01-01'; -- 恢复起始日期变量定义,使用标准日期格式
Begin
    while i <= 10 loop
        -- 用PG原生日期运算替换dateadd,移除多余嵌套块
        insert into test_calendar (test_date) values (start_date + i * interval '1 day');
        i := i + 1;
    end Loop;
end; -- 补全缺失的块结束标记
$$ ;

-- 查询生成的日历数据
SELECT * FROM test_calendar;

执行后会往表中插入2009-01-01到2009-01-11共11条连续日期记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:48:18