点击计算按钮触发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存在两个问题:
- 不必要关联
b_ordersdetails表:当前场景是通过商品ID直接获取单价计算总价,无需关联订单明细表,这会导致如果该商品还未生成订单明细时,SQL无返回结果。 - 可能
:P9_PRODUCTSID对应的商品不存在于b_product表中。
解决方案
- 简化SQL,直接从
b_product表获取单价计算:
SELECT :P9_QUANTITYS * pd.Productsprice INTO :P9_TOTALPRICES FROM b_product pd WHERE pd.ProductsID = :P9_PRODUCTSID;
- 添加异常处理,避免抛出原始错误,同时给用户友好反馈:
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
相关产品推荐
相关产品推荐

