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

PostgreSQL修改列数据类型函数调用报错求助

问题解决:PostgreSQL PL/pgSQL函数调用报错"column 'decimal' does not exist"

从错误信息来看,问题出在函数执行到RETURN语句时,PL/pgSQL错误地将decimal解析为列名,这通常是返回语句写法不符合returns void的要求,或是DDL语句存在潜在解析问题导致的。

解决方案

  1. 检查RETURN语句
    返回void类型的函数,RETURN语句必须写为RETURN;(无任何返回值)。如果不小心在RETURN后添加了decimal(比如RETURN decimal;),PL/pgSQL会将其解析为引用名为decimal的列,从而触发"column does not exist"错误。确保你的函数中RETURN语句是纯空返回。

  2. 拆分DDL操作(可选)
    虽然你的多列修改语法本身合法,但拆分操作可以避免潜在的语句解析问题:

    create function change_data_type()
    returns void
    language plpgsql
    as
    $$
    begin
        alter table summary_table
        alter column average_cost set data type decimal(3,2);
        
        alter table summary_table
        alter column average_total set data type decimal(6,2);
        
        RETURN;
    end;
    $$;
    
  3. 正确调用函数
    使用标准方式调用返回void的函数:

    SELECT change_data_type();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 08:01:34