Set Serveroutput On 1000000 Declare V_Input NUMBER := &TESTED; Function Numbertowords(P_Number In Out Number) Return Varchar2 Is V_Words Varchar2(32767) := ' '; V_Temp Number; Type Unitsmap Is Table Of Varchar2(250) Index By Binary_Integer; Type Tensmap Is Table Of Varchar2(250) Index By Binary_Integer; V_Unitsmap Unitsmap ; V_Tensmap Tensmap ; Begin V_Unitsmap(0) := 'Zero'; V_Unitsmap(1) := 'One'; V_Unitsmap(2) := 'Two'; V_Unitsmap(3) := 'Three'; V_Unitsmap(4) := 'Four'; V_Unitsmap(5) := 'Five'; V_Unitsmap(6) := 'Six'; V_Unitsmap(7) := 'Seven'; V_Unitsmap(8) := 'Eight'; V_Unitsmap(9) := 'Nine'; V_Unitsmap(10) := 'Ten'; V_Unitsmap(11) := 'Eleven'; V_Unitsmap(12) := 'Twelve'; V_Unitsmap(13) := 'Thirteen'; V_Unitsmap(14) := 'Fourteen'; V_Unitsmap(15) := 'Fifteen'; V_Unitsmap(16) := 'Sixteen'; V_Unitsmap(17) := 'Seventeen'; V_Unitsmap(18) := 'Eighteen'; V_Unitsmap(19) := 'Nineteen'; V_Tensmap(2) := 'Twenty'; V_Tensmap(3) := 'Thirty'; V_Tensmap(4) := 'Forty'; V_Tensmap(5) := 'Fifty'; V_Tensmap(6) := 'Sixty'; V_Tensmap(7) := 'Seventy'; V_Tensmap(8) := 'Eighty'; V_Tensmap(9) := 'Ninety'; If (P_Number = 0) Then Return 'Zero'; End If; If (P_Number < 0) Then V_Temp := Abs(P_Number); Return 'Minus ' || Numbertowords(V_Temp); End If; V_Temp := TRUNC(P_Number / 1000000); If ( V_Temp > 0) Then V_Words := V_WORDS || Numbertowords(V_Temp) || ' Million'; P_Number := Mod(P_Number,1000000); End If; V_Temp := TRUNC(P_Number / 1000); If ( V_Temp > 0)Then V_Words := V_Words || Numbertowords(V_Temp) || ' Thousand'; P_Number := Mod(P_Number,1000); End If; V_Temp := Trunc(P_Number / 100); If ( V_Temp > 0) Then V_Words := V_Words || Numbertowords(V_Temp) || ' Hundred '; P_Number := Mod(P_Number,100); End If; V_Temp := P_Number; If (V_Temp > 0) Then If (V_Words != ' ') Then V_Words := V_Words || 'And '; End If; If (V_Temp < 20) Then V_Words := V_Words || V_Unitsmap(V_Temp); Return V_Words; Else V_Temp := TRUNC(P_Number/ 10); V_Words := V_Words || V_Tensmap(V_Temp); If ((Mod(P_Number ,10)) > 0) Then V_Words :=V_Words|| '-' ||V_Unitsmap(Mod(P_Number,10)); End If; End If; End If; Return V_Words; End; Begin Dbms_Output.Put_Line(&TESTED||' ='||Numbertowords(V_Input)); End;
Friday, February 15, 2013
Number to Word Conversion in Oracle PL/SQL
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment