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

ORA-00979错误排查:INSERT子查询报错但单独SELECT正常

ORA-00979错误排查与修复

错误原因

你的PL/SQL块中,INSERT语句存在语法错误:INSERT INTO TMP_MY_CHART1 ( 后面多了一个左括号。这个多余的括号会让Oracle错误地将后续的SELECT子句解析为列名列表的一部分,而非插入的数据源,从而触发非GROUP BY表达式的错误(解析逻辑混乱导致对GROUP BY子句的误判)。单独执行SELECT语句时没有这个语法错误,所以能正常运行。

修正后的PL/SQL代码

begin
DELETE FROM TMP_MY_CHART1;
INSERT INTO TMP_MY_CHART1
    SELECT to_number (t.yyyy) as annee ,t.total
    FROM (
        SELECT to_char(fi.RSX_DATDERNMAJ, 'YYYY') as yyyy , COUNT(1) as total
        FROM FI_RESEAU fi
        WHERE fi.RSX_TYPLIC = 'TMP'
        GROUP BY to_char(fi.RSX_DATDERNMAJ, 'YYYY')
    ) t;
end;
/

补充说明

当使用INSERT ... SELECT语法时,若SELECT结果列顺序和目标表TMP_MY_CHART1的annee、total完全匹配,可直接省略列列表的括号;如果要指定列,正确写法是INSERT INTO TMP_MY_CHART1(annee, total) SELECT ...,注意括号内是列名,后面直接跟SELECT子句,不要多额外的括号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:12:47