PostgreSQL修改列数据类型函数调用报错求助
问题解决:PostgreSQL PL/pgSQL函数调用报错"column 'decimal' does not exist"
从错误信息来看,问题出在函数执行到RETURN语句时,PL/pgSQL错误地将decimal解析为列名,这通常是返回语句写法不符合returns void的要求,或是DDL语句存在潜在解析问题导致的。
解决方案
检查RETURN语句
返回void类型的函数,RETURN语句必须写为RETURN;(无任何返回值)。如果不小心在RETURN后添加了decimal(比如RETURN decimal;),PL/pgSQL会将其解析为引用名为decimal的列,从而触发"column does not exist"错误。确保你的函数中RETURN语句是纯空返回。拆分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; $$;正确调用函数
使用标准方式调用返回void的函数:SELECT change_data_type();
内容的提问来源于stack exchange,提问作者Wryiker
相关产品推荐
相关产品推荐

