You are on page 1of 3

CREATE OR REPLACE FUNCTION APPS.

taf (n IN NUMBER) RETURN VARCHAR2 IS num NUMBER; v_num VARCHAR2 (100); v_num1 NUMBER; v_num2 NUMBER; v_num3 NUMBER; v_num4 NUMBER; v_num5 NUMBER; v_mark NUMBER; p_mark NUMBER; len_num NUMBER; v_fraction NUMBER; v_num_char VARCHAR2 (4000); v_num_char1 VARCHAR2 (2000); v_num_char2 VARCHAR2 (2000); v_num_char3 VARCHAR2 (2000); v_num_char4 VARCHAR2 (2000); v_num_char5 VARCHAR2 (2000); v_frc_char VARCHAR2 (2000); v_taf VARCHAR2 (4000); v_tot_taf VARCHAR2 (4000); BEGIN num := ROUND (ABS (n), 2); v_mark := INSTR (num, '.'); IF v_mark = 0 THEN p_mark := LENGTH (num); ELSE p_mark := v_mark - 1; END IF; len_num := NVL (LENGTH (SUBSTR (num, 1, p_mark)), 0); IF len_num <= 18 THEN v_num := LPAD (SUBSTR (num, 1, p_mark), 18, 0); v_num1 := ROUND (SUBSTR (v_num, -6, 6)); v_num2 := ROUND (SUBSTR (v_num, -9, 3)); v_num3 := ROUND (SUBSTR (v_num, -12, 3)); v_num4 := ROUND (SUBSTR (v_num, -15, 3)); v_num5 := ROUND (SUBSTR (v_num, -18, 3)); --thousand IF v_num1 = 0 OR v_num1 IS NULL THEN v_num_char1 := ''; ELSE SELECT TO_CHAR (TO_DATE (v_num1, 'J'), 'JSP') INTO v_num_char1 FROM DUAL; END IF;

--thousand --Million --Billion --Trillion --Quadrillion

--thousand --Million --Billion --Trillion --Quadrillion --fraction

--Million IF v_num2 = 0 OR v_num2 IS NULL THEN v_num_char2 := ''; ELSE SELECT TO_CHAR (TO_DATE (v_num2, 'J'), 'JSP') || ' Million' INTO v_num_char2 FROM DUAL;

END IF; --Billion IF v_num3 = 0 OR v_num3 IS NULL THEN v_num_char3 := ''; ELSE SELECT TO_CHAR (TO_DATE (v_num3, 'J'), 'JSP') || ' Billion' INTO v_num_char3 FROM DUAL; END IF; --Trillion IF v_num4 = 0 OR v_num4 IS NULL THEN v_num_char4 := ''; ELSE SELECT TO_CHAR (TO_DATE (v_num4, 'J'), 'JSP') || ' Trillion' INTO v_num_char4 FROM DUAL; END IF; --Quadrillion IF v_num5 = 0 OR v_num5 IS NULL THEN v_num_char5 := ''; ELSE SELECT TO_CHAR (TO_DATE (v_num5, 'J'), 'JSP') || ' Quadrillion' INTO v_num_char5 FROM DUAL; END IF; --fraction IF v_mark = 0 THEN v_fraction := ''; ELSE v_mark := INSTR (num, '.') + 1; v_fraction := RPAD (SUBSTR (num, v_mark, LENGTH (num)), 2, 0); SELECT DECODE (TO_CHAR (TO_DATE (v_fraction, 'J'), 'JSP'), 'one', 'one' || '',--' Piastre', TO_CHAR (TO_DATE (v_fraction, 'J'), 'JSP') || ''--' Piastres' ) INTO v_frc_char FROM DUAL; END IF; v_taf := TRIM ( || || || || || || || || ); v_num_char5 ' ' v_num_char4 ' ' v_num_char3 ' ' v_num_char2 ' ' v_num_char1

IF v_taf IS NULL THEN v_taf := '';

ELSIF v_taf = 'one' THEN v_taf := 'one' ;--|| ' Pound'; ELSE v_taf := v_taf ;--|| ' Pounds'; END IF; IF v_mark = 0 THEN v_tot_taf := v_taf; ELSIF v_taf IS NULL THEN v_tot_taf := v_frc_char; ELSE v_tot_taf := v_taf || ' and ' || v_frc_char; END IF; IF SIGN (n) = -1 THEN RETURN ('( ' || v_tot_taf || ' )'); ELSE RETURN (v_tot_taf); END IF; ELSE RETURN ('The Function No Support This Number'); END IF; END; /

You might also like