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

Oracle SQL执行Insert Select语句报ORA-00936缺失表达式错误如何解决

ORA-00936 报错原因及修复方案

核心错误点

    1. 字段数量不匹配:INSERT语句指定要插入5个字段(ID、ID_UUID、GPSCENARIO_UUID、ACTION、VERSION),但SELECT子句返回了7个字段,数量完全不匹配。
    1. SELECT子句非法使用DEFAULT关键字:Oracle不支持在SELECT查询的字段列表中使用DEFAULT关键字,DEFAULT仅可用于INSERT的值列表场景。如果ID字段是自增主键/配置了默认值,直接从INSERT的字段列表中移除该字段即可,数据库会自动填充默认值。
    1. 子查询关联字段疑似错误:where ACTION.id not in (select ACTION FROM GroupScenarioAction 部分,GroupScenarioAction表中存储ACTION关联值的字段大概率是ACTION_ID而非ACTION,需要核对表字段名,避免关联逻辑错误。
    1. 语法冗余提示:INSERT的SELECT子句不需要加外层括号,Oracle语法下加括号不会触发报错,但属于冗余写法。

修正后参考SQL

假设ID字段为自增主键/有默认值,且GroupScenarioAction的关联字段为ACTION_ID,修正后语句如下:

insert into GroupScenarioAction (ID_UUID, GPSCENARIO_UUID, ACTION, VERSION)
select '0', ACTION.ID_UUID, '5310AFAA......', '1'
from ACTION 
where ACTION.id not in (
    select ACTION_ID 
    from GroupScenarioAction 
    where GPSCENARIO = '1'
);

如果ID字段需要手动指定序列值,将序列补充到字段列表即可:

insert into GroupScenarioAction (ID, ID_UUID, GPSCENARIO_UUID, ACTION, VERSION)
select 你的序列名.nextval, '0', ACTION.ID_UUID, '5310AFAA......', '1'
from ACTION 
where ACTION.id not in (
    select ACTION_ID 
    from GroupScenarioAction 
    where GPSCENARIO = '1'
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:54:00