How to get number in words in Oracle 10g Reports

How to get number in words
we are using Oracle 10g software
and in reports, i am trying to give as function code and return value as placeholder, but i am getting an error as foll.
REP:1401 'cf_1formula': Fatal PL/SQL error occurred.

Thanks in advance
Krishnan R

Questions by krishvim99

Showing Answers 1 - 9 of 9 Answers

Shital Mistry

  • Aug 11th, 2012
 

Question is not clear to me. Specify some details what exactly you want to do?

  Was this answer useful?  Yes

asifinet

  • Feb 15th, 2013
 

Code
  1. SET Serveroutput ON 1000000

  2. Declare

  3.   V_Input NUMBER := &TESTED;

  4.   FUNCTION Numbertowords(P_Number IN Out Number) RETURN Varchar2 IS

  5.     V_Words Varchar2(32767) :=  ;

  6.     V_Temp Number;    

  7.     Type Unitsmap IS TABLE Of Varchar2(250) INDEX BY Binary_Integer;

  8.     Type Tensmap IS TABLE Of Varchar2(250) INDEX BY Binary_Integer;    

  9.     V_Unitsmap Unitsmap ;

  10.     V_Tensmap Tensmap   ;

  11.   Begin

  12.     V_Unitsmap(0) := Zero;

  13.     V_Unitsmap(1) := One;

  14.     V_Unitsmap(2) := Two;

  15.     V_Unitsmap(3) := Three;

  16.     V_Unitsmap(4) := Four;

  17.     V_Unitsmap(5) := Five;

  18.     V_Unitsmap(6) := Six;

  19.     V_Unitsmap(7) := Seven;

  20.     V_Unitsmap(8) := Eight;

  21.     V_Unitsmap(9) := Nine;

  22.     V_Unitsmap(10) := Ten;

  23.     V_Unitsmap(11) := Eleven;

  24.     V_Unitsmap(12) := Twelve;

  25.     V_Unitsmap(13) := Thirteen;

  26.     V_Unitsmap(14) := Fourteen;

  27.     V_Unitsmap(15) := Fifteen;

  28.     V_Unitsmap(16) := Sixteen;

  29.     V_Unitsmap(17) := Seventeen;

  30.     V_Unitsmap(18) := Eighteen;

  31.     V_Unitsmap(19) := Nineteen;

  32.     V_Tensmap(2)  := Twenty;

  33.     V_Tensmap(3)  := Thirty;

  34.     V_Tensmap(4)  := Forty;

  35.     V_Tensmap(5)  := Fifty;

  36.     V_Tensmap(6)  := Sixty;

  37.     V_Tensmap(7)  := Seventy;

  38.     V_Tensmap(8)  := Eighty;

  39.     V_Tensmap(9)  := Ninety;

  40.     IF (P_Number = 0) Then

  41.       RETURN Zero;

  42.     End IF;

  43.     IF (P_Number < 0) Then

  44.       V_Temp := Abs(P_Number);      

  45.       RETURN Minus  || Numbertowords(V_Temp);

  46.     End IF;

  47.     V_Temp := TRUNC(P_Number / 1000000);

  48.     IF ( V_Temp > 0) Then

  49.       V_Words := V_WORDS || Numbertowords(V_Temp) ||  Million;

  50.       P_Number := Mod(P_Number,1000000);

  51.     End IF;

  52.     V_Temp := TRUNC(P_Number / 1000);

  53.     IF ( V_Temp > 0)Then

  54.       V_Words := V_Words || Numbertowords(V_Temp) ||  Thousand;

  55.       P_Number := Mod(P_Number,1000);

  56.     End IF;

  57.     V_Temp := Trunc(P_Number / 100);

  58.     IF ( V_Temp > 0) Then

  59.       V_Words := V_Words ||  Numbertowords(V_Temp) ||  Hundred ;

  60.       P_Number := Mod(P_Number,100);

  61.     End IF;

  62.     V_Temp := P_Number;

  63.     IF (V_Temp > 0) Then

  64.       IF (V_Words !=  ) Then

  65.         V_Words := V_Words || AND ;

  66.        End IF;

  67.       IF (V_Temp < 20) Then

  68.         V_Words := V_Words || V_Unitsmap(V_Temp);

  69.         RETURN V_Words;

  70.       Else

  71.        V_Temp := TRUNC(P_Number/ 10);

  72.         V_Words := V_Words || V_Tensmap(V_Temp);

  73.         IF ((Mod(P_Number ,10)) > 0) Then

  74.           V_Words :=V_Words|| - ||V_Unitsmap(Mod(P_Number,10));

  75.         End IF;

  76.       End IF;        

  77.     End IF;

  78.     RETURN V_Words;

  79.   End;

  80. Begin    

  81.   Dbms_Output.Put_Line(&TESTED|| =||Numbertowords(V_Input));

  82. End;

  Was this answer useful?  Yes

Ashish

  • Mar 10th, 2014
 

Code
  1. Function No_To_Word(Amount Number) Return Varchar2 Is

  2.     Wordsamt Number(30, 12) := 0;

  3.     Words    Varchar2(500) := ;

  4.     Str      Varchar2(50) := ;

  5.     Amt      Number(30, 12) := Amount;

  6.     t_Amt    Number(30, 12) := Amount;

  7.     t_Word   Varchar2(15);

  8.     Pragma Autonomous_Transaction;

  9.   Begin

  10.     Dbms_Output.Put_Line();

  11.     If Nvl(Amt, 0) = 0 Then

  12.       Words := Nil ;

  13.     Else

  14.       If Length(To_Char(Amt)) > 9 Then

  15.         t_Word := Crores ;

  16.       End If;

  17.    

  18.       Wordsamt := Floor(Amt / 1000000000);

  19.       If Wordsamt > 0 Then

  20.         Str := Digitword(Wordsamt);

  21.         If Str =  One  Then

  22.           Str :=  One Hundred ;

  23.         Else

  24.           Str := Digitword(Wordsamt) ||  Hundred ;

  25.         End If;

  26.       Else

  27.         Str := ;

  28.       End If;

  29.       Words    := Words || Str;

  30.       Amt      := Amt - Wordsamt * 1000000000;

  31.       Wordsamt := Floor(Amt / 10000000);

  32.       If Wordsamt > 0 Then

  33.         Str := Digitword(Wordsamt);

  34.         If Str =  One  Then

  35.           Str :=  One Crore ;

  36.         Else

  37.           Str := Digitword(Wordsamt) || Crores ;

  38.         End If;

  39.       Else

  40.         Str := ;

  41.       End If;

  42.       Words    := Words || Str;

  43.       Amt      := Amt - Wordsamt * 10000000;

  44.       Wordsamt := Floor(Amt / 100000);

  45.       Str      := Digitword(Wordsamt);

  46.       If Wordsamt > 0 Then

  47.         If Str =  One  Then

  48.           Str :=  One Lakh ;

  49.         Else

  50.           Str := Digitword(Wordsamt) || Lakhs ;

  51.         End If;

  52.       Else

  53.         Str := ;

  54.       End If;

  55.       Words    := Words || Str;

  56.       Amt      := Amt - Wordsamt * 100000;

  57.       Wordsamt := Floor(Amt / 1000);

  58.       If Wordsamt > 0 Then

  59.         Str := Digitword(Wordsamt) || Thousand ;

  60.       Else

  61.         Str := ;

  62.       End If;

  63.       Words    := Words || Str;

  64.       Amt      := Amt - Wordsamt * 1000;

  65.       Wordsamt := Floor(Amt / 100);

  66.       If Wordsamt > 0 Then

  67.         Str := Digitword(Wordsamt) || Hundred ;

  68.       Else

  69.         Str := ;

  70.       End If;

  71.       Words    := Words || Str;

  72.       Amt      := Amt - Wordsamt * 100;

  73.       Wordsamt := Floor(Amt);

  74.       If Wordsamt > 0 Then

  75.         Str := Digitword(Wordsamt);

  76.       Else

  77.         Str := ;

  78.       End If;

  79.       Words    := Words || Str;

  80.       Amt      := Amt - Wordsamt * 1;

  81.       Amt      := Round(Amt, 3);

  82.       Wordsamt := Floor((Amt - Floor(Amt)) * 100);

  83.       If Wordsamt > 0 Then

  84.         Str := And Paise  || Digitword(Wordsamt);

  85.       Else

  86.         Str := ;

  87.       End If;

  88.       Words := Words || Str;

  89.     End If;

  90.     If Length(To_Char(t_Amt)) > 9 Then

  91.       t_Word := Crores ;

  92.       Words  := Words ||   || t_Word;

  93.     End If;

  94.     Words := Words || Only .;

  95.     Return Words;

  96.   End;

  97.  



  Was this answer useful?  Yes

Give your answer:

If you think the above answer is not correct, Please select a reason and add your answer below.

 

Related Answered Questions

 

Related Open Questions