create or replace function Get_Real_Number ( --根據處理方法ID,取得處理後的金額-計算的金額 ID IN NUMBER, -- 處理方法ID n_Amount IN NUMBER) ----------------------------------------------------------------------- -- 用 途 自訂資料精度處理。 -- 建立者 :Andrew ----------------------------------------------------------------------- -- 修改記錄列表:(按日期的先後順序逆序排列) -- 修改時間 修改人 實現的功能說明 -- 9 全舍 0 全入 4四舍5入 -----------------------------------------------------------------------return NUMBER-- 返回的金額IS v_amountdot VARCHAR2(5); --小數位元字元 v_keep NUMBER ; --保留的小數位元 v_rounding NUMBER ; --舍入分界 v_Amount NUMBER:=0 ; --返回的金額BEGIN
SELECT amountdot, nvl(rounding,0) INTO v_amountdot,v_rounding FROM 處理方法表 WHERE id = SALE_PLACE_ID; v_keep := Length(v_amountdot) - instr(v_amountdot,'.') ; --要保留的小數位元 IF v_rounding = 9 THEN --處理全捨棄 v_Amount := trunc(n_Amount,v_keep); END IF; IF v_rounding = 4 THEN --處理四捨五入 v_Amount := round(n_Amount,v_keep); END IF; IF v_rounding = 0 THEN --處理全進位 v_Amount := trunc(n_Amount,v_keep); --小數為數剛好等於要求保留的數 IF v_Amount <> n_Amount THEN --如果截取後的數與原來的數字不同,進1 v_Amount := v_Amount + to_number(v_amountdot); END IF; RETURN v_Amount;