如何將第一個函數的返回值調用到第二個函數中?這是第一個函數計算客戶,使我店的訪問量:將Oracle PLSQL函數調用成第二個函數
CREATE OR REPLACE FUNCTION CALCULATE (NUM CUSTOMER.CUST_VISIT%TYPE)
RETURN NUMBER
IS
V_CUST_VISIT NUMBER(3);
V_COUNT INTEGER;
BEGIN
SELECT CUST_VISIT
INTO V_CUST_VISIT
FROM CUSTOMER, BOOKING
WHERE CUSTOMER.CUST_ID = BOOKING.CUST_ID;
SELECT MAX(COUNT(*))
INTO v_count
FROM BOOKING
GROUP BY CUST_ID
HAVING count(*)>=0;
CASE v_count
WHEN 3 THEN v_cust_visit:= v_count;
DBMS_OUTPUT.PUT_LINE('10% DISCOUNT DUE');
WHEN 6 THEN v_cust_visit:= v_count;
DBMS_OUTPUT.PUT_LINE('20% DISCOUNT DUE');
WHEN 9 THEN v_cust_visit:= v_count;
DBMS_OUTPUT.PUT_LINE('30% DISCOUNT DUE');
ELSE v_cust_visit:= v_count;
DBMS_OUTPUT.PUT_LINE('OOPS NO DISCOUNT DUE YET! AFTER THREE BOOKINGS');
END CASE;
END;
/
Where in the second function:
CREATE OR REPLACE FUNCTION CALC_BILL
(BILL_NUM TREATMENT.TREAT_COST%TYPE)
RETURN NUMBER
IS
CUST_ID VARCHAR2(4);
TREAT_COST NUMBER(10,2);
v_TREAT_cost TREATMENT.TREAT_COST%TYPE;
DISCOUNTED_BILL NUMBER(10,2);
NO_DISCOUNT EXCEPTION;
BEGIN
SELECT TREAT_COST
INTO v_treat_cost
FROM CUSTOMER C, TREATMENT T, TREAT_SESSION TS
WHERE C.CUST_ID = TS.CUST_ID
AND T.TREAT_ID = TS.TREAT_ID;
IF 計算方法():= 3 - 這是我怎樣努力和它未work-- THEN DISCOUNTED_BILL := v_treat_cost-(v_treat_cost * 0.1);
ELSIF CALCULATE:= 6 THEN DISCOUNTED_BILL:= v_treat_cost-(v_treat_cost * 0.2);
ELSIF CALCULATE:= 9 THEN DISCOUNTED_BILL:= v_treat_cost-(v_treat_cost * 0.3); ELSE RAISE NO_DISCOUNT;
END IF;
END;
/
你不應該使用在你的''CALCULATE' CALL_BILL'? – bonCodigo