Plsql 在PL/SQL中可以向该函数添加什么异常?
此函数用于返回使用购物者ID的购物者的订单总数。每次我尝试抛出异常时,都不会发生任何事情。它将返回一个空值。例如,IDSHAPPER=19不存在于BB_BASKET中,因此我认为如果lv_total_orders=0,我可以抛出一个异常,但它仍然返回空值,DBMS_OUTPUT.PUT_行不会显示输出中的任何内容。如果我要使用BB_BASAKET中不存在的IDSHOPPER,有人能建议如何对此函数抛出异常吗?这是我班的家庭作业,但除了要求的例外,我已经完成了大部分作业。我找不到任何关于如何执行异常的建议Plsql 在PL/SQL中可以向该函数添加什么异常?,plsql,oracle11g,Plsql,Oracle11g,此函数用于返回使用购物者ID的购物者的订单总数。每次我尝试抛出异常时,都不会发生任何事情。它将返回一个空值。例如,IDSHAPPER=19不存在于BB_BASKET中,因此我认为如果lv_total_orders=0,我可以抛出一个异常,但它仍然返回空值,DBMS_OUTPUT.PUT_行不会显示输出中的任何内容。如果我要使用BB_BASAKET中不存在的IDSHOPPER,有人能建议如何对此函数抛出异常吗?这是我班的家庭作业,但除了要求的例外,我已经完成了大部分作业。我找不到任何关于如何执行异
CREATE OR REPLACE FUNCTION NUM_PURCH_SF
(p_shopper IN NUMBER)
RETURN NUMBER
AS
lv_total_orders NUMBER(3);
BEGIN
SELECT SUM(ORDERPLACED)
INTO lv_total_orders
FROM BB_BASKET
WHERE IDSHOPPER = p_shopper
AND ORDERPLACED = 1;
RETURN lv_total_orders;
END;
SELECT NUM_PURCH_SF(IDSHOPPER)
FROM BB_SHOPPER
WHERE IDSHOPPER = 23;
聚合函数始终返回单行,即使没有与条件匹配的行。你可以看看 所以,如果您想抛出异常,可以使用。 在代码中的return语句之前:
if lv_total_orders is null then
raise_application_error(-20200, 'No data found for given ShopperID, ShopperID: ' || p_shopper);
end if;