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

PL/SQL执行UPDATE语句报ORA-00905 missing keyword错误如何解决

ORA-00905错误原因与修复方案

错误产生原因

你的SQL存在两处语法问题直接触发了ORA-00905报错:

  1. CASE表达式语法不完整,缺少必须的END结束关键字
  2. 语法逻辑错误:CASE是单值表达式,仅能返回一个值用于单个列的赋值,你在THEN 'E'后直接用逗号拼接last_update_time=sysdate的多列赋值逻辑,违反了Oracle的SQL语法规则。

修复方案

调整SET子句的结构,将两个字段的赋值逻辑拆分,各自使用独立的CASE表达式控制,修复后的完整SQL如下:

UPDATE XXBBBY_WEEK_DATA_CNV_STG 
SET
process_status = CASE 
    WHEN error1 = 'No week data Details found' THEN 'E'
    WHEN error1 = 'Processed successfully' THEN 'P'
    ELSE process_status -- 保留不符合条件的原值
END,
last_update_time = CASE
    WHEN error1 = 'No week data Details found' THEN sysdate
    ELSE last_update_time -- 保留不符合条件的原值
END
WHERE  process_status = 'N';

核心修改点说明

  • 为process_status对应的CASE表达式补全END关键字,闭合表达式
  • 将last_update_time的赋值逻辑拆分出来作为独立的赋值项,同样用CASE表达式控制更新规则
  • 新增ELSE分支保证不匹配条件的字段保留原有值,避免非预期的空值覆盖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:57:04