Shital Mistry
Answered On : Aug 11th, 2012
Question is not clear to me. Specify some details what exactly you want to do?
Login to rate this answer.
Code
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;
Login to rate this answer.