2017-06-05 45 views
0

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;的Oracle SQL Developer - 错误消息未出现

此函数计算由单一的一名工作人员的订单总数。它需要一个员工ID并返回订单总数。如果输入不在系统中的员工ID,则不显示异常消息。任何人都可以,请帮助我吗?

回答

2

您的查询总是会返回一个值。如果没有匹配,则计数将为0,因此v_totalorders将为零。

没有异常产生。你需要明确的if逻辑v_totalorders

+0

它的工作!非常感谢! –