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

点击计算按钮触发ORA-01403无数据错误,求总价计算解决方案

ORA-01403: 未找到数据错误排查(Ajax调用执行服务器端代码时)

点击计算按钮时,Ajax调用返回服务器错误 ORA-01403: no data found,需求为计算商品总价:单品价格存储在b_product表,数量来自当前表单的:P9_QUANTITYS字段,最终将计算结果赋值给总价字段:P9_TOTALPRICES。

执行的服务器端代码如下:

SELECT :P9_QUANTITYS*Productsprice
INTO :P9_TOTALPRICES
FROM b_ordersdetails od
JOIN b_product pd ON od.PRODUCTSID= pd.ProductsID
WHERE pd.ProductsID= :P9_PRODUCTSID;

错误原因

ORA-01403异常是因为SELECT INTO语句未返回任何行,PL/SQL会触发该异常。你的SQL存在两个问题:

  1. 不必要关联b_ordersdetails表:当前场景是通过商品ID直接获取单价计算总价,无需关联订单明细表,这会导致如果该商品还未生成订单明细时,SQL无返回结果。
  2. 可能:P9_PRODUCTSID对应的商品不存在于b_product表中。

解决方案

  1. 简化SQL,直接从b_product表获取单价计算:
SELECT :P9_QUANTITYS * pd.Productsprice
INTO :P9_TOTALPRICES
FROM b_product pd
WHERE pd.ProductsID = :P9_PRODUCTSID;
  1. 添加异常处理,避免抛出原始错误,同时给用户友好反馈:
BEGIN
  SELECT :P9_QUANTITYS * pd.Productsprice
  INTO :P9_TOTALPRICES
  FROM b_product pd
  WHERE pd.ProductsID = :P9_PRODUCTSID;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    :P9_TOTALPRICES := 0; -- 可设置默认值或提示信息
    -- 也可自定义提示,比如通过页面元素告知用户"该商品不存在,请检查商品ID"
END;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 02:33:17