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

PL/SQL执行报ORA-00934分组函数不允许在此处错误如何解决

错误原因
  • 语法使用错误:Oracle PL/SQL的SELECT ... INTO语句仅允许出现1次INTO关键字,所有接收查询结果的变量需要统一放在INTO之后、FROM之前,用逗号分隔。你提交的代码中重复书写了3次INTO关键字,导致SUM聚合函数被放置在语法非法位置,直接触发ORA-00934: group function is not allowed here报错,后续整条SQL被Oracle忽略。
  • 潜在逻辑问题:当前分组查询如果返回多条结果,SELECT INTO会触发ORA-01422: exact fetch returns more than requested number of rows报错,建议根据业务场景调整查询逻辑。
修复方案

方案1:修正SELECT INTO语法(仅适用于分组后仅返回1条结果的场景)

Declare
v_U_HFB_STO Varchar(200);
v_RAW_VOL_STO Number ;
v_IO_RAW_VOL_STO Number ;
 
begin
select 
  B.U_BACODE||B.U_BANAME, 
  SUM(A.RAW_VOL), 
  SUM(A.IO_RAW_VOL) 
into 
  v_U_HFB_STO, 
  v_RAW_VOL_STO, 
  v_IO_RAW_VOL_STO 
from UDT_SNAPSHOT_IN_TIME_REPORT A, EXT_S_ITEM B 
WHERE A.REORDERPOINT<>1 
  AND A.LOC LIKE 'STO%' 
  AND A.ITEM=B.ITEM 
GROUP BY (B.U_BACODE||B.U_BANAME);

insert into STAGING.WEEKLY_ANALYSIS_TREND_REPORT_U_HFB_STO values(v_U_HFB_STO,v_RAW_VOL_STO,v_IO_RAW_VOL_STO);
 
end;
/

方案2:改用INSERT ... SELECT写法(适用于分组后返回多条结果的场景,性能更优)

不需要定义中间变量,直接将查询结果插入目标表,避免多行返回报错:

begin
insert into STAGING.WEEKLY_ANALYSIS_TREND_REPORT_U_HFB_STO
select 
  B.U_BACODE||B.U_BANAME, 
  SUM(A.RAW_VOL), 
  SUM(A.IO_RAW_VOL) 
from UDT_SNAPSHOT_IN_TIME_REPORT A, EXT_S_ITEM B 
WHERE A.REORDERPOINT<>1 
  AND A.LOC LIKE 'STO%' 
  AND A.ITEM=B.ITEM 
GROUP BY (B.U_BACODE||B.U_BANAME);
end;
/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 16:15:05