CREATE OR REPLACE FUNCTION func_totalStaffOrders(
v_staffID IN INTEGER)
RETURN VARCHAR
AS
v_totalOrders NUMBER;
MESSAGE VARCHAR2(100);
BEGIN
IF v_staffID IS NOT NULL THEN
SELECT COUNT(order_id)
INTO v_totalOrders
FROM orders
WHERE staff_ID = v_staffID;
MESSAGE := 'Staff with the ID ' || v_staffID ||' has took an overall of ' ||
v_totalOrders || ' order/s.';
RETURN MESSAGE;
ELSE
MESSAGE:='Null values are not allowed.';
RETURN MESSAGE;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
MESSAGE := 'Invalid staff ID entered.';
RETURN MESSAGE;
WHEN OTHERS THEN
MESSAGE := 'Error! ' || SQLERRM;
RETURN MESSAGE;
END;
此功能计算单个工作人员的订单总数。它接收员工ID并返回订单总数。如果我输入的系统员工ID不在系统中,则不会显示异常消息。有人可以帮帮我吗?
答案 0 :(得分:2)
您的查询总是会返回一个值。如果没有匹配,则计数将为0,因此v_totalorders
将为零。
没有生成异常。您需要在if
上明确v_totalorders
逻辑。