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

Postgres存储过程中用CASE返回星期名报语法错误如何解决

错误原因

你的代码存在3处核心问题:

  • PL/pgSQL语法中,CASE表达式的返回值需要显式赋值给变量,不能直接用AS 变量名的写法,赋值要使用:=操作符
  • 缺少函数返回必需的RETURN语句,同时CASE语句结束后缺少必要的分号
  • 入参weekno的类型设计不合理:取值是0-6的整数,用double precision很容易因为浮点数精度问题导致匹配失败,建议替换为int类型

修正后的完整代码

CREATE OR REPLACE FUNCTION ReturnWeekName(weekno int)
RETURNS varchar AS $$
DECLARE 
     weekname varchar;
BEGIN
    weekname := CASE 
        WHEN weekno = 0 THEN 'Sunday'
        WHEN weekno = 1 THEN 'Monday'
        WHEN weekno = 2 THEN 'Tuesday'
        WHEN weekno = 3 THEN 'Wednesday'
        WHEN weekno = 4 THEN 'Thursday'
        WHEN weekno = 5 THEN 'Friday'
        WHEN weekno = 6 THEN 'Saturday'
    END;
    RETURN weekname;
END;
$$
LANGUAGE plpgsql;

测试调用

-- 返回 Sunday
SELECT ReturnWeekName(0);
-- 返回 Saturday
SELECT ReturnWeekName(6);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:06:04