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

PL/SQL条件语句报错求助:请帮忙排查代码错误(附报错信息)

PL/SQL条件语句错误排查解决办法

错误点分析

  • ELSE分支语法错误:ELSE是默认分支,不需要跟任何条件表达式,你在ELSE后面加了(stock_rec.price >= 75),这违反了PL/SQL的语法规则,也是报错的直接原因。
  • 拼写错误:所有DBMS_PUTPUT都写错了,正确写法是DBMS_OUTPUT(少了字母'O')。
  • 冗余嵌套:内层的BEGIN...END完全多余,没必要嵌套,直接写IF逻辑即可。
  • 潜在异常风险:SELECT INTO如果查询不到匹配数据会抛出NO_DATA_FOUND异常,建议添加异常处理块避免程序崩溃。

修正后的代码

DECLARE
    stock_rec stock%ROWTYPE;
    var_company stock.company%TYPE := 'IBM';
BEGIN
    SELECT * INTO stock_rec
    FROM stock s
    WHERE s.company = var_company;

    IF stock_rec.price < 45 THEN
        DBMS_OUTPUT.PUT_LINE('Current price is very low !');
    ELSIF stock_rec.price >= 45 AND stock_rec.price < 55 THEN
        DBMS_OUTPUT.PUT_LINE('Current price is low !');
    ELSIF stock_rec.price >= 55 AND stock_rec.price < 65 THEN
        DBMS_OUTPUT.PUT_LINE('Current price is medium !');
    ELSIF stock_rec.price >= 65 AND stock_rec.price < 75 THEN
        DBMS_OUTPUT.PUT_LINE('Current price is medium high !');
    ELSE
        DBMS_OUTPUT.PUT_LINE('Current price is high !');
    END IF;
EXCEPTION
    WHEN NO_DATA_FOUND THEN
        DBMS_OUTPUT.PUT_LINE('未找到IBM的库存数据');
    WHEN TOO_MANY_ROWS THEN
        DBMS_OUTPUT.PUT_LINE('找到多条IBM的库存数据');
END;
/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:15:44