You need to enable JavaScript to run this app. Oracle环境下仓库容量校验用Check_ein_Lager存储过程(隐式游标)编译执行报错
优惠活动
大模型
产品
解决方案
定价
更多

Oracle环境下仓库容量校验用Check_ein_Lager存储过程(隐式游标)编译执行报错

Oracle存储过程校验仓库容量的问题排查

需求说明

编写Oracle存储过程,校验指定编号的仓库是否达到满容量。

初始实现代码

SET SERVEROUTPUT ON
Create or Replace
Procedure Check_ein_Lager(lagernummer int) AS
summe int := 0;
capacityy int;
Begin
  for v_rec in (Select lager.stueckkap into capacityy from lager where lagernummer = lager.lnr) loop
    summe := summe + v_rec.stueck;
  if(summe<0)
  then DBMS_OUTPUT.PUT_LINE('Negativ'||' '||lagernummer||' '||summe);
  end if;
  if (summe > capacityy)
  then DBMS_OUTPUT.PUT_LINE('Höher'||' ' ||lagernummer||' '||summe);
  end if;
  end loop;
end Check_ein_Lager;
/

execute Check_ein_Lager(15);

执行报错信息(原德文内容翻译)

  • 编译器日志提示错误
  • 命令execute Check_ein_Lager(15)在第130行启动失败
  • 错误详情:
    • ORA-06550: 第1行第7列
    • PLS-00905: 用户IF4EBIHORACM下的CHECK_EIN_LAGER对象处于无效状态
    • ORA-06550: 第1行第7列
    • PL/SQL: 语句被忽略
    • 错误码说明:06550. 00000 - "%s行,%s列:\n%s"
    • 触发原因:PL/SQL编译阶段出现语法错误,导致对象无法正常生效
    • 关联提示:存储过程CHECK_EIN_LAGER编译未通过

核心编译错误点

  • 游标定义语法错误:将into capacityy写入游标select子句中,Oracle游标不支持在定义阶段使用into赋值语法,直接触发编译失败
  • 游标查询字段缺失:原游标仅查询了仓库容量字段stueckkap,循环中引用的库存字段stueck未被纳入查询列,触发字段不存在的编译错误
  • 逻辑结构错误:仓库额定容量是固定单值,不属于游标逐行遍历的集合数据,原写法将容量赋值嵌入游标循环的结构完全不符合语法要求

修正后可编译的参考代码

SET SERVEROUTPUT ON
CREATE OR REPLACE PROCEDURE Check_ein_Lager(lagernummer IN INT) AS
  summe INT := 0;
  capacityy INT;
BEGIN
  -- 获取目标仓库的额定容量
  SELECT stueckkap 
    INTO capacityy 
  FROM lager 
  WHERE lnr = lagernummer;

  -- 汇总目标仓库的总库存数量
  SELECT NVL(SUM(stueck),0)
    INTO summe
  FROM lager 
  WHERE lnr = lagernummer;

  -- 库存校验输出
  IF summe < 0 THEN
    DBMS_OUTPUT.PUT_LINE('Negativ'||' '||lagernummer||' '||summe);
  END IF;

  IF summe > capacityy THEN
    DBMS_OUTPUT.PUT_LINE('Höher'||' ' ||lagernummer||' '||summe);
  END IF;
END Check_ein_Lager;
/

-- 执行指定仓库校验
EXEC Check_ein_Lager(15);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 23:24:04