Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle PL/SQL में INR मुद्रा (भारतीय रुपये) के लिए अंकों/संख्याओं को शब्दों में बदलना

Oracle PL/SQL में INR मुद्रा (भारतीय रुपये) के लिए अंकों/संख्याओं को शब्दों में बदलना

संख्याओं/अंकों को भारतीय रुपये के शब्दों में बदलने के दो कार्य नीचे दिए गए हैं। मुख्य कार्य रुपया फ़ंक्शन है।

उपयोग:

Select Rupees(99999.99) from dual;

या

Set serveroutput on;
Declare
  vstring varchar2(200);
Begin
   vstring := Rupees(9546);
  dbms_output.put_line(vstring);
end;

यह अधिकतम 99,999.00 के लिए मान्य है, आप आगे संशोधित कर सकते हैं।

CREATE OR REPLACE FUNCTION number_to_word (pnum in number) RETURN varchar2 IS

rvalue varchar2(50);

BEGIN

  if pnum = 1 then     

      rvalue := 'One';

  elsif pnum = 2 then

      rvalue := 'Two';

  elsif pnum = 3 then

      rvalue := 'Three';

  elsif pnum = 4 then

      rvalue := 'Four';

  elsif pnum = 5 then

      rvalue := 'Five';

  elsif pnum = 6 then

      rvalue := 'Six';

  elsif pnum = 7 then

      rvalue := 'Seven';

  elsif pnum = 8 then

      rvalue := 'Eight';

  elsif pnum = 9 then 

      rvalue := 'Nine';

  elsif pnum = 10 then

      rvalue := 'Ten';

  elsif pnum = 11 then

      rvalue := 'Eleven';

  elsif pnum = 12 then

      Rvalue := 'Twelve';

  elsif pnum = 13 then

      rvalue := 'Thirteen';

  elsif pnum = 14 then

      rvalue := 'Fourteen';

  elsif pnum = 15 then

      rvalue := 'Fifteen';

  elsif pnum = 16 then

      rvalue := 'Sixteen';

  elsif pnum = 17 then

      rvalue := 'Seventeen';

  elsif pnum = 18 then

      rvalue := 'Eighteen';

  elsif pnum = 19 then

      rvalue := 'Nineteen';

  elsif pnum = 20 then

      rvalue := 'Twenty';

  elsif pnum = 30 then

      rvalue := 'Thirty';

  elsif pnum = 40 then

      rvalue := 'Forty';

  elsif pnum = 50 then

      rvalue := 'Fifty';

  elsif pnum = 60 then

      rvalue := 'Sixty';

  elsif pnum = 70 then

      rvalue := 'Seventy';

  elsif pnum = 80 then

      rvalue := 'Eighty';

  elsif pnum = 90 then

      rvalue := 'Ninety';

  else

      rvalue := '';

  end if;

  return(rvalue);

END;

/
CREATE OR REPLACE FUNCTION Rupees (pn IN NUMBER)

   RETURN VARCHAR2

IS

   vt     VARCHAR2 (200);

   ntv    VARCHAR2 (10);

   vlen   NUMBER (2);

BEGIN

   vt := 'Rupees ';

   ntv := RTRIM (LTRIM (TO_CHAR (pn)));

   vlen := LENGTH (ntv);

   IF vlen > 0 AND vlen < 2

   THEN                                                        -- single digit

      vt := vt || number_to_word (pn);

   ELSIF vlen > 1 AND vlen < 3

   THEN                                                           -- two digit

      IF pn < 21

      THEN

         vt := vt || number_to_word (pn);

      ELSE

         vt :=

            vt || number_to_word (TO_NUMBER (SUBSTR (ntv, 1, 1) || '0'));

         vt := vt || ' ';

         vt := vt || number_to_word (TO_NUMBER (SUBSTR (ntv, 2, 1)));

      END IF;

   -- two digit handled.

   ELSIF vlen > 2 AND vlen < 4

   THEN                                                         -- three digit

      vt := vt || number_to_word (TO_NUMBER (SUBSTR (ntv, 1, 1)));

      vt := vt || ' Hundred ';

      IF TO_NUMBER (SUBSTR (ntv, 2, 2)) > 0

      THEN

         vt := vt || 'and ';

      END IF;

      IF TO_NUMBER (SUBSTR (ntv, 2, 2)) > 20

      THEN

         vt :=

            vt || number_to_word (TO_NUMBER (SUBSTR (ntv, 2, 1) || '0'));

         IF TO_NUMBER (SUBSTR (ntv, 2, 1)) > 0

         THEN

            vt := vt || ' ';

         END IF;

         vt := vt || number_to_word (TO_NUMBER (SUBSTR (ntv, 3, 1)));

      ELSE

         vt := vt || number_to_word (TO_NUMBER (SUBSTR (ntv, 2, 2)));

         IF TO_NUMBER (SUBSTR (ntv, 2, 1)) > 0

         THEN

            vt := vt || ' ';

         END IF;

      END IF;

   -- three digit handled

   ELSIF vlen > 3 AND vlen < 5

   THEN                                                            -- thousand

      vt := vt || number_to_word (TO_NUMBER (SUBSTR (ntv, 1, 1)));

      vt := vt || ' Thousand ';

      IF TO_NUMBER (SUBSTR (ntv, 2, 3)) > 0

      THEN

         IF TO_NUMBER (SUBSTR (ntv, 2, 1)) > 0

         THEN

            vt := vt || number_to_word (TO_NUMBER (SUBSTR (ntv, 2, 1)));

            vt := vt || ' Hundred ';

         END IF;

         IF TO_NUMBER (SUBSTR (ntv, 3, 2)) > 0

         THEN

            vt := vt || 'and ';

         END IF;

         IF TO_NUMBER (SUBSTR (ntv, 3, 2)) > 20

         THEN

            -- 9999

            vt :=

               vt

               || number_to_word (TO_NUMBER (SUBSTR (ntv, 3, 1) || '0'));

            IF TO_NUMBER (SUBSTR (ntv, 3, 1)) > 0

            THEN

               vt := vt || ' ';

            END IF;

            vt := vt || number_to_word (TO_NUMBER (SUBSTR (ntv, 4, 1)));

         ELSE

            vt := vt || number_to_word (TO_NUMBER (SUBSTR (ntv, 3, 2)));

            IF TO_NUMBER (SUBSTR (ntv, 3, 1)) > 0

            THEN

               vt := vt || ' ';

            END IF;

         END IF;

      END IF;

      -- thousand handled now 99 thousand.

      ELSIF vlen > 4 AND vlen < 6

   THEN                                                            

   -- thousand

   if to_number(substr(ntv,1,2)) <= 20 then

      vt := vt || number_to_word (TO_NUMBER (SUBSTR (ntv, 1, 2)));

      vt := vt || ' Thousand ';

      else

      vt := vt || number_to_word(to_number(substr(ntv,1,1)||'0'));

      vt := vt || ' '|| number_to_word(to_number(substr(ntv,2,1)));

      vt := vt || ' Thousand ';

   end if;

      IF TO_NUMBER (SUBSTR (ntv, 3, 3)) > 0

      THEN

         IF TO_NUMBER (SUBSTR (ntv, 3, 1)) > 0

         THEN

            vt := vt || number_to_word (TO_NUMBER (SUBSTR (ntv, 3, 1)));

            vt := vt || ' Hundred ';

         END IF;

         IF TO_NUMBER (SUBSTR (ntv, 4, 2)) > 0

         THEN

            vt := vt || 'and ';

         END IF;

         IF TO_NUMBER (SUBSTR (ntv, 4, 2)) > 20

         THEN

            -- 99999

            vt :=

               vt

               || number_to_word (TO_NUMBER (SUBSTR (ntv, 4, 1) || '0'));

            IF TO_NUMBER (SUBSTR (ntv, 4, 1)) > 0

            THEN

               vt := vt || ' ';

            END IF;

            vt := vt || number_to_word (TO_NUMBER (SUBSTR (ntv, 5, 1)));

         ELSE

            vt := vt || number_to_word (TO_NUMBER (SUBSTR (ntv, 4, 2)));

            IF TO_NUMBER (SUBSTR (ntv, 4, 1)) > 0

            THEN

               vt := vt || ' ';

            END IF;

         END IF;

      END IF;

   END IF;

   IF LENGTH (vt) > 7

   THEN

      vt := RTRIM (vt) || ' only.';

   ELSE

      vt := '';

   END IF;

   RETURN (vt);

END;

/

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP से Oracle डेटाबेस कैसे कनेक्ट करें

  2. एक टेबल पर CONNECT BY LEVEL अतिरिक्त पंक्तियाँ क्यों लौटाता है?

  3. ओरेकल DATE और TIMESTAMP के बीच अंतर

  4. Oracle के अलावा RDBMS में कनेक्ट BY या पदानुक्रमित प्रश्न

  5. SQL डेवलपर 4.1.3 जारी किया गया