2017-06-05 4 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開発者 - エラーメッセージは、この機能は、単一のスタッフによって行われた注文の合計数をカウントし

表示されません。スタッフIDを受け取り、注文総数を返します。システムにないスタッフIDを入力すると、例外メッセージは表示されません。誰でも、私を助けてくれる?

答えて

2

クエリは常に値を返します。一致するものがなければ、カウントは0になるので、v_totalordersはゼロになります。

例外は発生しません。明示的にifロジックをv_totalordersに設定します。

+0

これは機能しました。どうもありがとう! –

関連する問題