1. Terbilang dalam bahasa inggris
FUNCTION
terbilang (
v_number
IN
NUMBER
)
RETURN
VARCHAR2
AS
TYPE myArray
IS
TABLE
OF
VARCHAR2 (255);
str_array myArray
:= myArray (
''
,
'thousand '
,
' million '
,
' billion '
,
' trillion '
,
' quadrillion '
,
' quintillion '
,
' sextillion '
,
'septillion '
,
' octillion '
,
' nonillion '
,
' decillion '
,
' undecillion '
,
' duodecillion '
);
str_number VARCHAR2 (50);
l_return VARCHAR2 (4000);
trans1 VARCHAR2 (4000);
trans2 VARCHAR2 (4000);
BEGIN
str_number := TRUNC (
ABS
(v_number));
FOR
i
IN
1 .. str_array.
COUNT
LOOP
EXIT
WHEN
str_number
IS
NULL
;
IF (SUBSTR (str_number, LENGTH (str_number) - 2, 3) <> 0)
THEN
trans1 :=
TO_CHAR (TO_DATE (SUBSTR (str_number, LENGTH (str_number) - 2,
3),
'J'
),
'Jsp'
)
|| str_array (i)
|| trans1;
END
IF;
str_number := SUBSTR (str_number, 1, LENGTH (str_number) - 3);
END
LOOP;
l_return := trans1;
IF TO_CHAR (v_number)
LIKE
'%.%'
THEN
str_number :=
(
ABS
(v_number) - TRUNC (
ABS
(v_number)))
* (TO_NUMBER (RPAD (
'1'
,
(LENGTH ((
ABS
(v_number) - TRUNC (
ABS
(v_number))
)
)
),
RPAD (
'0'
, 50,
'0'
)
)
)
);
FOR
i
IN
1 .. str_array.
COUNT
LOOP
EXIT
WHEN
str_number
IS
NULL
;
IF (SUBSTR (str_number, LENGTH (str_number) - 2, 3) <> 0)
THEN
trans2 :=
TO_CHAR (TO_DATE (SUBSTR (str_number,
LENGTH (str_number) - 2,
3
),
'J'
),
'Jsp'
)
|| str_array (i)
|| trans2;
END
IF;
str_number := SUBSTR (str_number, 1, LENGTH (str_number) - 3);
END
LOOP;
l_return := trans1 ||
' point '
|| trans2;
END
IF;
RETURN
l_return;
END
terbilang;
SQL>
SELECT
TERBILANG(100)
as
AA
FROM
DUAL;
AA
-----------------
One Hundred
2. Terbilang dalam bahasa indonesia
FUNCTION
terbilang_indo(v_number
IN
NUMBER)
RETURN
VARCHAR2
AS
BEGIN
RETURN
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
REPLACE
(
LOWER
( TERBILANG(v_number))
,
'trillion'
,
'Trilyun'
)
,
'billion'
,
'Milyar'
)
,
'million'
,
'Juta'
)
,
'onethousand'
,
'Seribu'
)
,
'thousand'
,
'Ribu'
)
,
'nine hundred'
,
'Sembilan Ratus'
)
,
'eigth hundred'
,
'Delapan Ratus'
)
,
'seven hundred'
,
'Tujuh Ratus'
)
,
'six hundred'
,
'Enam Ratus'
)
,
'five hundred'
,
'Lima Ratus'
)
,
'four hundred'
,
'Empat Ratus'
)
,
'three hundred'
,
'Tiga Ratus'
)
,
'two hundred'
,
'Dua Ratus'
)
,
'one hundred'
,
'Seratus'
)
,
'hundred'
,
'Ratus'
)
,
'ninety'
,
'Sembilan Puluh'
)
,
'eighty'
,
'Delapan Puluh'
)
,
'seventy'
,
'Tujuh Puluh'
)
,
'sixty'
,
'Enam Puluh'
)
,
'fifty'
,
'Lima Puluh'
)
,
'forty'
,
'Empat Puluh'
)
,
'thirty'
,
'Tiga Puluh'
)
,
'twenty'
,
'Dua Puluh'
)
,
'nineteen'
,
'Sembilanbelas'
)
,
'eighteen'
,
'Delapanbelas'
)
,
'seventeen'
,
'Tujuhbelas'
)
,
'sixteen'
,
'Enambelas'
)
,
'fifteen'
,
'Limabelas'
)
,
'fourteen'
,
'Empatbelas'
)
,
'thirteen'
,
'Tigabelas'
)
,
'twelve'
,
'Duabelas'
)
,
'eleven'
,
'Sebelas'
)
,
'ten'
,
'Sepuluh'
)
,
'nine'
,
'Sembilan'
)
,
'eight'
,
'Delapan'
)
,
'seven'
,
'Tujuh'
)
,
'six'
,
'Enam'
)
,
'five'
,
'Lima'
)
,
'four'
,
'Empat'
)
,
'three'
,
'Tiga'
)
,
'two'
,
'Dua'
)
,
'one'
,
'Satu'
)
,
'point'
,
'koma'
)
,
''
,
''
);
END
terbilang_indo;
SQL>
SELECT
TERBILANG_INDO(100)
as
AA
FROM
DUAL;
AA
-----------------
Seratus