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

如何在PL/pgSQL函数中为枚举类型添加值?

解决PL/pgSQL函数添加枚举值的语法错误问题

问题原因

你遇到的语法错误是因为PostgreSQL的DDL语句(如ALTER TYPE)无法直接引用PL/pgSQL函数的参数变量。原代码里的p会被PostgreSQL当作标识符(而非字符串参数值)解析,导致语法不匹配。

解决方案

需要使用动态SQL构造并执行ALTER TYPE语句,通过format()函数安全地将参数值注入SQL语句,同时避免SQL注入风险。

修正后的函数代码:

CREATE FUNCTION add_prof(p text) RETURNS VOID AS $$
BEGIN
    EXECUTE format('ALTER TYPE profession ADD VALUE %L', p);
    RETURN;
END;
$$ LANGUAGE plpgsql;

关键说明

  • format()函数的%L占位符会自动将输入的字符串参数转换为带单引号的SQL字面量,同时处理特殊字符的转义(比如单引号),确保语句安全且语法正确。
  • 调用函数时直接传入字符串即可:SELECT add_prof('new_profession');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:55:17