إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

تحويل الارقام إلى حروف مظبوطة 100 × 100


28 رد (ردود) على هذا الموضوع

#1 mm_taha

mm_taha

    مشترك

  • الأعضــاء
  • 112 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 19 June 2005 - 03:20 PM

هذا الموضوع قد نشر من قبل ولكن اردت ان انشرة مرة أخرى بعد إجراء بعض التعديلات


CREATE OR REPLACE PACKAGE Convert_Number
AS /******************************************************************************
NAME: Convert_Number
PURPOSE:

REVISIONS:
Ver Date Author Description
--------- ---------- --------------- ------------------------------------
1.0 14/06/2005 1. Created this package.
******************************************************************************/
FUNCTION Get_text (num IN VARCHAR2)
RETURN VARCHAR2;

FUNCTION get_possion (i IN NUMBER)
RETURN NUMBER;
END Convert_Number;
/


/* Formatted on 2005/06/19 15:09 (Formatter Plus v4.8.5) */
CREATE OR REPLACE PACKAGE BODY Convert_Number
AS FUNCTION get_possion (i IN NUMBER)
RETURN NUMBER
IS
p NUMBER;
BEGIN p := i MOD 3;

IF p = 2
THEN
p := -1;
END IF;

RETURN p;
END;

FUNCTION get_text (num IN VARCHAR2)
RETURN VARCHAR2
IS
n VARCHAR2 (20);
text VARCHAR2 (20);
number_in_text VARCHAR2 (2000);
CATEGORY VARCHAR2 (20);
follow VARCHAR2 (2);
t VARCHAR2 (20);
/* the number string in the new order */
l NUMBER; /* the length of number */
m NUMBER := 0;
/* the addition number so l can be devided by 3 */
loop_counter NUMBER;
BEGIN l := LENGTH (num);

IF l MOD 3 = 1
THEN
m := 2;
ELSIF l MOD 3 = 2
THEN
m := 1;
END IF;

n := LPAD (num, l + m, 0);

FOR loop_counter IN 1 .. l + m
LOOP
t :=
t || SUBSTR (n, loop_counter + get_possion (loop_counter - 1), 1);
END LOOP;

FOR loop_counter IN REVERSE 1 .. l + m
LOOP
IF SUBSTR (t, loop_counter, 1) <> '0'
THEN
IF get_possion (loop_counter) = -1
THEN
IF SUBSTR (t, loop_counter, 1) = '1' AND SUBSTR (t, loop_counter + 1, 1) = '1'
THEN
text := 'إحدى ';
ELSIF SUBSTR (t, loop_counter, 1) = '1' AND l <> 4
THEN
text := 'واحد ';
ELSIF SUBSTR (t, loop_counter, 1) = '2' AND SUBSTR (t, loop_counter + 1, 1) = '1'
THEN
text := 'اثنا ';
ELSIF SUBSTR (t, loop_counter, 1) = '2' AND l <> 4
THEN
text := 'اثنين ';
ELSIF SUBSTR (t, loop_counter, 1) = '3'
THEN
text := 'ثلاثة ';
ELSIF SUBSTR (t, loop_counter, 1) = '4'
THEN
text := 'اربعة ';
ELSIF SUBSTR (t, loop_counter, 1) = '5'
THEN
text := 'خمسة ';
ELSIF SUBSTR (t, loop_counter, 1) = '6'
THEN
text := 'ستة ';
ELSIF SUBSTR (t, loop_counter, 1) = '7'
THEN
text := 'سبعة ';
ELSIF SUBSTR (t, loop_counter, 1) = '8'
THEN
text := 'ثمانية ';
ELSIF SUBSTR (t, loop_counter, 1) = '9'
THEN
text := 'تسعة ';
END IF;
ELSIF get_possion (loop_counter) = 0
THEN
IF SUBSTR (t, loop_counter, 1) = '1' AND SUBSTR (t, loop_counter - 1, 1) = '0'
THEN
text := 'عشرة ';
ELSIF SUBSTR (t, loop_counter, 1) = '1'
THEN
text := 'عشر ';
ELSIF SUBSTR (t, loop_counter, 1) = '2'
THEN
text := 'عشرون ';
ELSIF SUBSTR (t, loop_counter, 1) = '3'
THEN
text := 'ثلاثون ';
ELSIF SUBSTR (t, loop_counter, 1) = '4'
THEN
text := 'اربعون ';
ELSIF SUBSTR (t, loop_counter, 1) = '5'
THEN
text := 'خمسون ';
ELSIF SUBSTR (t, loop_counter, 1) = '6'
THEN
text := 'ستون ';
ELSIF SUBSTR (t, loop_counter, 1) = '7'
THEN
text := 'سبعون ';
ELSIF SUBSTR (t, loop_counter, 1) = '8'
THEN
text := 'ثمانون ';
ELSIF SUBSTR (t, loop_counter, 1) = '9'
THEN
text := 'تسعون ';
END IF;
ELSIF get_possion (loop_counter) = 1
THEN
IF SUBSTR (t, loop_counter, 1) = '1'
THEN
text := 'مائة ';
ELSIF SUBSTR (t, loop_counter, 1) = '2'
THEN
text := 'مائتين ';
ELSIF SUBSTR (t, loop_counter, 1) = '3'
THEN
text := 'ثلاثمائة ';
ELSIF SUBSTR (t, loop_counter, 1) = '4'
THEN
text := 'اربعمائة ';
ELSIF SUBSTR (t, loop_counter, 1) = '5'
THEN
text := 'خمسمائة ';
ELSIF SUBSTR (t, loop_counter, 1) = '6'
THEN
text := 'ستمائة ';
ELSIF SUBSTR (t, loop_counter, 1) = '7'
THEN
text := 'سبعمائة ';
ELSIF SUBSTR (t, loop_counter, 1) = '8'
THEN
text := 'ثمانمائة ';
ELSIF SUBSTR (t, loop_counter, 1) = '9'
THEN
text := 'تعسمائة ';
END IF;
END IF;
END IF;

IF loop_counter = 1 OR (SUBSTR (t, loop_counter, 1) = '0') OR (loop_counter = 2 AND SUBSTR (t, loop_counter - 1, 1) = '0') OR (loop_counter = 3 AND SUBSTR (t, loop_counter - 2, 2) = '00') OR ( get_possion (loop_counter) = 0 AND SUBSTR (n, loop_counter - 1, 1) = 1
)
THEN
follow := '';
ELSE
follow := 'و ';
END IF;

IF SUBSTR (n, loop_counter - 1, 1) <> '0'
THEN
IF (l + m - loop_counter = 11 AND l > 12)
THEN
CATEGORY := 'بليار ';
ELSIF (l + m - loop_counter = 8 AND l > 9)
THEN
CATEGORY := 'بليون ';
ELSIF (l + m - loop_counter = 5 AND l > 6)
THEN
CATEGORY := 'مليون ';
ELSIF (l + m - loop_counter = 2 AND l = 4 AND SUBSTR (n, 3, 1) = '2'
)
THEN
CATEGORY := 'الفين ';
ELSIF ( l + m - loop_counter = 2 AND l = 4 AND SUBSTR (n, 3, 1) NOT IN ('1', '2')
)
THEN
CATEGORY := 'الاف ';
ELSIF (l + m - loop_counter = 2 AND l = 5 AND SUBSTR (n, 2, 2) = '10'
)
THEN
CATEGORY := 'الاف ';
ELSIF (l + m - loop_counter = 2 AND l > 3)
THEN
CATEGORY := 'الف ';
END IF;
END IF;

number_in_text := CATEGORY || follow || text || number_in_text;
CATEGORY := '';
text := '';
END LOOP;

RETURN number_in_text;
END;
END Convert_Number;
/


Examples


SQL> SELECT Convert_Number.get_text (16536)
2 FROM DUAL; CONVERT_NUMBER.GET_TEXT(16536)
--------------------------------------------
ستة عشر الف و خمسمائة و ستة و ثلاثون


SQL> SELECT Convert_Number.get_text (53216536)
2 FROM DUAL; CONVERT_NUMBER.GET_TEXT(53216536)
-------------------------------------------------------------------
ثلاثة و خمسون مليون و مائتين و ستة عشر الف و خمسمائة و ستة و ثلاثون


SQL> SELECT Convert_Number.get_text (2048)
2 FROM DUAL; CONVERT_NUMBER.GET_TEXT(2048)
-------------------------------------------
الفين و ثمانية و اربعون



SQL> SELECT Convert_Number.get_text (1000048)
2 FROM DUAL; CONVERT_NUMBER.GET_TEXT(100048)
-------------------------------------------
واحد مليون و ثمانية و اربعون


تم تحرير الموضوع من قبل المشرف باضافة اخر نسخة من الpackage
المستخدمة في ملف منفصل لسهولة التحميل

ملفات مرفقة



#2 aza

aza

    عضو نشط

  • الأعضــاء
  • 303 مشاركة

تاريخ المشاركة 22 June 2005 - 11:45 AM

يعطيك العافية.. ممتاز

#3 osama80

osama80

    مشترك

  • الأعضــاء
  • 84 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 23 June 2005 - 01:04 AM

مشكور على الجهد العظيم
و بارك الله فيك

#4 IGBSpeed

IGBSpeed

    عضو نشط

  • الأعضــاء
  • 253 مشاركة

تاريخ المشاركة 30 June 2005 - 01:45 AM

جزاك الله خيراً أخي الكريم ولكن هل من الممكن أن تضيف بعض التعديلات القليله ليعطي النتيجة بالهللات ...

أنا أعرف أني أطلب الكثير ...

وإذا أمكنني أن أنشيئ واحد يقوم بتغيير الريال السعودي إلى دولار أمريكي مثلاً سوف أقوم به .
igb_igsb@hotmail.com

********

صفحتي على الفيس


#5 kzaghloul

kzaghloul

    مشترك

  • الأعضــاء
  • 118 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 30 June 2005 - 09:08 AM

الله يعطيك العافية يا أخ mm_taha طريقة جيدة وأتمنى لك التوفيق وبالنسبة إلى طلب الأخ ابراهيم بخش فقد قمت بعمل طريقة أخرى باسم (التفقيط) وهي مرفقة مع الرسالة وأرجو ان تستفيد منها وما عليك إلا تعديل كلمة دينار إلى ريال وكلمة فلس إلى هلله

ملفات مرفقة

  • ملف مرفق  convertno.fmb   132كيلو   63 عدد مرات التحميل

ودمتم ذخرا لهذه الأمة
---------------------------------------------
أخوكم في الله KHALED ZAGHLOUL
PROGRAMMER AND SYSTEM ANALYST
KZAGHLOUL@YAHOO.COM

#6 Abu_afnan

Abu_afnan

    مشترك

  • الأعضــاء
  • 99 مشاركة

تاريخ المشاركة 30 June 2005 - 10:42 AM

أشكرك أخي الحبيب
هذه الطريقة أعمل عليها من فترة ;)
، بس هذه الطريقة كانت مظبوطة أكثر من عملي :( .
أكرر شكري
قد هيئوك لإمر إن فطينت له
فربئ بنفسك أن تكون كسولا

#7 salama11433

salama11433

    عضو نشط

  • الأعضــاء
  • 356 مشاركة

تاريخ المشاركة 30 June 2005 - 12:26 PM

مشكوررررررر جداا
لا تبكى على ماضى لا يعود
salama ayad
samy32@msn.com
semsem11433@yahoo.com
Egypt - cairo

#8 mmafalha

mmafalha

    عضو

  • الأعضــاء
  • 25 مشاركة

تاريخ المشاركة 30 June 2005 - 08:10 PM

يسلموا كثيرا وجاري التحميل

#9 m_dba

m_dba

    عضو نشط

  • الأعضــاء
  • 238 مشاركة
  • الاسم الأول:Ahmad
  • اسم العائلة:Zaki
  • البـلـد: Country Flag

تاريخ المشاركة 17 July 2005 - 06:10 PM

هذا الموضوع قد نشر من قبل ولكن اردت ان انشرة مرة أخرى بعد إجراء بعض التعديلات


CREATE OR REPLACE PACKAGE Convert_Number
AS /******************************************************************************
  NAME:      Convert_Number
  PURPOSE:

  REVISIONS:
  Ver        Date        Author          Description
  ---------  ----------  ---------------  ------------------------------------
  1.0        14/06/2005            1. Created this package.
******************************************************************************/
  FUNCTION Get_text (num IN VARCHAR2)
      RETURN VARCHAR2;

  FUNCTION get_possion (i IN NUMBER)
      RETURN NUMBER;
END Convert_Number;
/


/* Formatted on 2005/06/19 15:09 (Formatter Plus v4.8.5) */
CREATE OR REPLACE PACKAGE BODY Convert_Number
AS FUNCTION get_possion (i IN NUMBER)
      RETURN NUMBER
  IS
      p  NUMBER;
  BEGIN p := i MOD 3;

      IF p = 2
      THEN
        p := -1;
      END IF;

      RETURN p;
  END;

  FUNCTION get_text (num IN VARCHAR2)
      RETURN VARCHAR2
  IS
      n                VARCHAR2 (20);
      text            VARCHAR2 (20);
      number_in_text  VARCHAR2 (2000);
      CATEGORY        VARCHAR2 (20);
      follow          VARCHAR2 (2);
      t                VARCHAR2 (20);
      /* the number string in the new order */
      l                NUMBER;                    /* the length of number  */
      m                NUMBER          := 0;
      /* the addition number so l can be devided by 3 */
      loop_counter    NUMBER;
  BEGIN l := LENGTH (num);

      IF l MOD 3 = 1
      THEN
        m := 2;
      ELSIF l MOD 3 = 2
      THEN
        m := 1;
      END IF;

      n := LPAD (num, l + m, 0);

      FOR loop_counter IN 1 .. l + m
      LOOP
        t :=
            t || SUBSTR (n, loop_counter + get_possion (loop_counter - 1), 1);
      END LOOP;

      FOR loop_counter IN REVERSE 1 .. l + m
      LOOP
        IF SUBSTR (t, loop_counter, 1) <> '0'
        THEN
            IF get_possion (loop_counter) = -1
            THEN
              IF    SUBSTR (t, loop_counter, 1) = '1' AND SUBSTR (t, loop_counter + 1, 1) = '1'
              THEN
                  text := 'إحدى ';
              ELSIF SUBSTR (t, loop_counter, 1) = '1' AND l <> 4
              THEN
                  text := 'واحد ';
              ELSIF    SUBSTR (t, loop_counter, 1) = '2' AND SUBSTR (t, loop_counter + 1, 1) = '1'
              THEN
                  text := 'اثنا ';
              ELSIF SUBSTR (t, loop_counter, 1) = '2' AND l <> 4
              THEN
                  text := 'اثنين ';
              ELSIF SUBSTR (t, loop_counter, 1) = '3'
              THEN
                  text := 'ثلاثة ';
              ELSIF SUBSTR (t, loop_counter, 1) = '4'
              THEN
                  text := 'اربعة ';
              ELSIF SUBSTR (t, loop_counter, 1) = '5'
              THEN
                  text := 'خمسة ';
              ELSIF SUBSTR (t, loop_counter, 1) = '6'
              THEN
                  text := 'ستة ';
              ELSIF SUBSTR (t, loop_counter, 1) = '7'
              THEN
                  text := 'سبعة ';
              ELSIF SUBSTR (t, loop_counter, 1) = '8'
              THEN
                  text := 'ثمانية ';
              ELSIF SUBSTR (t, loop_counter, 1) = '9'
              THEN
                  text := 'تسعة ';
              END IF;
            ELSIF get_possion (loop_counter) = 0
            THEN
              IF    SUBSTR (t, loop_counter, 1) = '1' AND SUBSTR (t, loop_counter - 1, 1) = '0'
              THEN
                  text := 'عشرة ';
              ELSIF SUBSTR (t, loop_counter, 1) = '1'
              THEN
                  text := 'عشر ';
              ELSIF SUBSTR (t, loop_counter, 1) = '2'
              THEN
                  text := 'عشرون ';
              ELSIF SUBSTR (t, loop_counter, 1) = '3'
              THEN
                  text := 'ثلاثون ';
              ELSIF SUBSTR (t, loop_counter, 1) = '4'
              THEN
                  text := 'اربعون ';
              ELSIF SUBSTR (t, loop_counter, 1) = '5'
              THEN
                  text := 'خمسون ';
              ELSIF SUBSTR (t, loop_counter, 1) = '6'
              THEN
                  text := 'ستون ';
              ELSIF SUBSTR (t, loop_counter, 1) = '7'
              THEN
                  text := 'سبعون ';
              ELSIF SUBSTR (t, loop_counter, 1) = '8'
              THEN
                  text := 'ثمانون ';
              ELSIF SUBSTR (t, loop_counter, 1) = '9'
              THEN
                  text := 'تسعون ';
              END IF;
            ELSIF get_possion (loop_counter) = 1
            THEN
              IF SUBSTR (t, loop_counter, 1) = '1'
              THEN
                  text := 'مائة ';
              ELSIF SUBSTR (t, loop_counter, 1) = '2'
              THEN
                  text := 'مائتين ';
              ELSIF SUBSTR (t, loop_counter, 1) = '3'
              THEN
                  text := 'ثلاثمائة ';
              ELSIF SUBSTR (t, loop_counter, 1) = '4'
              THEN
                  text := 'اربعمائة ';
              ELSIF SUBSTR (t, loop_counter, 1) = '5'
              THEN
                  text := 'خمسمائة ';
              ELSIF SUBSTR (t, loop_counter, 1) = '6'
              THEN
                  text := 'ستمائة ';
              ELSIF SUBSTR (t, loop_counter, 1) = '7'
              THEN
                  text := 'سبعمائة ';
              ELSIF SUBSTR (t, loop_counter, 1) = '8'
              THEN
                  text := 'ثمانمائة ';
              ELSIF SUBSTR (t, loop_counter, 1) = '9'
              THEN
                  text := 'تعسمائة ';
              END IF;
            END IF;
        END IF;

        IF    loop_counter = 1 OR (SUBSTR (t, loop_counter, 1) = '0') OR (loop_counter = 2 AND SUBSTR (t, loop_counter - 1, 1) = '0') OR (loop_counter = 3 AND SUBSTR (t, loop_counter - 2, 2) = '00') OR (    get_possion (loop_counter) = 0 AND SUBSTR (n, loop_counter - 1, 1) = 1
              )
        THEN
            follow := '';
        ELSE
            follow := 'و ';
        END IF;

        IF SUBSTR (n, loop_counter - 1, 1) <> '0'
        THEN
            IF (l + m - loop_counter = 11 AND l > 12)
            THEN
              CATEGORY := 'بليار ';
            ELSIF (l + m - loop_counter = 8 AND l > 9)
            THEN
              CATEGORY := 'بليون ';
            ELSIF (l + m - loop_counter = 5 AND l > 6)
            THEN
              CATEGORY := 'مليون ';
            ELSIF (l + m - loop_counter = 2 AND l = 4 AND SUBSTR (n, 3, 1) = '2'
                  )
            THEN
              CATEGORY := 'الفين ';
            ELSIF (    l + m - loop_counter = 2 AND l = 4 AND SUBSTR (n, 3, 1) NOT IN ('1', '2')
                  )
            THEN
              CATEGORY := 'الاف ';
            ELSIF (l + m - loop_counter = 2 AND l = 5 AND SUBSTR (n, 2, 2) = '10'
                  )
            THEN
              CATEGORY := 'الاف ';
            ELSIF (l + m - loop_counter = 2 AND l > 3)
            THEN
              CATEGORY := 'الف ';
            END IF;
        END IF;

        number_in_text := CATEGORY || follow || text || number_in_text;
        CATEGORY := '';
        text := '';
      END LOOP;

      RETURN number_in_text;
  END;
END Convert_Number;
/


Examples


SQL> SELECT Convert_Number.get_text (16536)
  2    FROM DUAL; CONVERT_NUMBER.GET_TEXT(16536)
--------------------------------------------
ستة عشر الف و خمسمائة و ستة و ثلاثون


SQL> SELECT Convert_Number.get_text (53216536)
  2    FROM DUAL; CONVERT_NUMBER.GET_TEXT(53216536)
-------------------------------------------------------------------
ثلاثة و خمسون مليون و مائتين و ستة عشر الف و خمسمائة و ستة و ثلاثون


SQL> SELECT Convert_Number.get_text (2048)
  2    FROM DUAL; CONVERT_NUMBER.GET_TEXT(2048)
-------------------------------------------
الفين و ثمانية و اربعون



SQL> SELECT Convert_Number.get_text (1000048)
  2    FROM DUAL; CONVERT_NUMBER.GET_TEXT(100048)
-------------------------------------------
واحد مليون و ثمانية و اربعون

ارك الله فيك
والله انو عمل ممتاز
ما شاء الله
امسح ذنوبك في دقيقتين - بس دقيقتين وشوف

http://www.shbab1.com/2minutes.htm

#10 mm_taha

mm_taha

    مشترك

  • الأعضــاء
  • 112 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 23 November 2005 - 03:35 PM

هذا التعديل بعد إضافة العملة حيث يمكن تغيرها او إضافة عملا أخرى[FONT=Times]

/* Formatted on 2005/11/23 13:39 (Formatter Plus v4.8.5) */
CREATE OR REPLACE PACKAGE convert_number
AS
   FUNCTION get_text (num IN VARCHAR2)
      RETURN VARCHAR2;

   FUNCTION get_possion (i IN NUMBER)
      RETURN NUMBER;

   FUNCTION to_text (num IN VARCHAR2)
      RETURN VARCHAR2;

   FUNCTION to_text (num IN VARCHAR2, cur IN VARCHAR2)
      RETURN VARCHAR2;
END convert_number;
/


CREATE OR REPLACE PACKAGE BODY convert_number
AS
   FUNCTION get_possion (i IN NUMBER)
      RETURN NUMBER
   IS
      p   NUMBER;
   BEGIN
      p := i MOD 3;

      IF p = 2
      THEN
         p := -1;
      END IF;

      RETURN p;
   END;

   FUNCTION get_text (num IN VARCHAR2)
      RETURN VARCHAR2
   IS
      n                VARCHAR2 (20);
      text             VARCHAR2 (20);
      number_in_text   VARCHAR2 (2000);
      CATEGORY         VARCHAR2 (20);
      follow           VARCHAR2 (2);
      t                VARCHAR2 (20);
      /* the number string in the new order */
      l                NUMBER;                    /* the length of number  */
      m                NUMBER          := 0;
      /* the addition number so l can be devided by 3 */
      loop_counter     NUMBER;
   BEGIN
      l := LENGTH (num);

      IF l MOD 3 = 1
      THEN
         m := 2;
      ELSIF l MOD 3 = 2
      THEN
         m := 1;
      END IF;

      n := LPAD (num, l + m, 0);

      FOR loop_counter IN 1 .. l + m
      LOOP
         t :=
            t || SUBSTR (n, loop_counter + get_possion (loop_counter - 1), 1);
      END LOOP;

      FOR loop_counter IN REVERSE 1 .. l + m
      LOOP
         IF SUBSTR (t, loop_counter, 1) <> '0'
         THEN
            IF get_possion (loop_counter) = -1
            THEN
               IF     SUBSTR (t, loop_counter, 1) = '1'
                  AND SUBSTR (t, loop_counter + 1, 1) = '1'
               THEN
                  text := 'إحدى ';
               ELSIF     SUBSTR (t, loop_counter, 1) = '1'
                     AND (l = 4 AND loop_counter <> 2)
               THEN
                  text := 'واحد ';
               ELSIF SUBSTR (t, loop_counter, 1) = '1' AND l <> 4
               THEN
                  text := 'واحد ';
               ELSIF     SUBSTR (t, loop_counter, 1) = '2'
                     AND SUBSTR (t, loop_counter + 1, 1) = '1'
               THEN
                  text := 'اثنا ';
               ELSIF     SUBSTR (t, loop_counter, 1) = '2'
                     AND (l = 4 AND loop_counter <> 2)
               THEN
                  text := 'اثنين ';
               ELSIF SUBSTR (t, loop_counter, 1) = '2' AND l <> 4
               THEN
                  text := 'اثنين ';
               ELSIF SUBSTR (t, loop_counter, 1) = '3'
               THEN
                  text := 'ثلاثة ';
               ELSIF SUBSTR (t, loop_counter, 1) = '4'
               THEN
                  text := 'اربعة ';
               ELSIF SUBSTR (t, loop_counter, 1) = '5'
               THEN
                  text := 'خمسة ';
               ELSIF SUBSTR (t, loop_counter, 1) = '6'
               THEN
                  text := 'ستة ';
               ELSIF SUBSTR (t, loop_counter, 1) = '7'
               THEN
                  text := 'سبعة ';
               ELSIF SUBSTR (t, loop_counter, 1) = '8'
               THEN
                  text := 'ثمانية ';
               ELSIF SUBSTR (t, loop_counter, 1) = '9'
               THEN
                  text := 'تسعة ';
               END IF;
            ELSIF get_possion (loop_counter) = 0
            THEN
               IF     SUBSTR (t, loop_counter, 1) = '1'
                  AND SUBSTR (t, loop_counter - 1, 1) = '0'
               THEN
                  text := 'عشرة ';
               ELSIF SUBSTR (t, loop_counter, 1) = '1'
               THEN
                  text := 'عشر ';
               ELSIF SUBSTR (t, loop_counter, 1) = '2'
               THEN
                  text := 'عشرون ';
               ELSIF SUBSTR (t, loop_counter, 1) = '3'
               THEN
                  text := 'ثلاثون ';
               ELSIF SUBSTR (t, loop_counter, 1) = '4'
               THEN
                  text := 'اربعون ';
               ELSIF SUBSTR (t, loop_counter, 1) = '5'
               THEN
                  text := 'خمسون ';
               ELSIF SUBSTR (t, loop_counter, 1) = '6'
               THEN
                  text := 'ستون ';
               ELSIF SUBSTR (t, loop_counter, 1) = '7'
               THEN
                  text := 'سبعون ';
               ELSIF SUBSTR (t, loop_counter, 1) = '8'
               THEN
                  text := 'ثمانون ';
               ELSIF SUBSTR (t, loop_counter, 1) = '9'
               THEN
                  text := 'تسعون ';
               END IF;
            ELSIF get_possion (loop_counter) = 1
            THEN
               IF SUBSTR (t, loop_counter, 1) = '1'
               THEN
                  text := 'مائة ';
               ELSIF SUBSTR (t, loop_counter, 1) = '2'
               THEN
                  text := 'مائتين ';
               ELSIF SUBSTR (t, loop_counter, 1) = '3'
               THEN
                  text := 'ثلاثمائة ';
               ELSIF SUBSTR (t, loop_counter, 1) = '4'
               THEN
                  text := 'اربعمائة ';
               ELSIF SUBSTR (t, loop_counter, 1) = '5'
               THEN
                  text := 'خمسمائة ';
               ELSIF SUBSTR (t, loop_counter, 1) = '6'
               THEN
                  text := 'ستمائة ';
               ELSIF SUBSTR (t, loop_counter, 1) = '7'
               THEN
                  text := 'سبعمائة ';
               ELSIF SUBSTR (t, loop_counter, 1) = '8'
               THEN
                  text := 'ثمانمائة ';
               ELSIF SUBSTR (t, loop_counter, 1) = '9'
               THEN
                  text := 'تسعمائة ';
               END IF;
            END IF;
         END IF;

         IF    loop_counter = 1
            OR (SUBSTR (t, loop_counter, 1) = '0')
            OR (loop_counter = 2 AND SUBSTR (t, loop_counter - 1, 1) = '0')
            OR (loop_counter = 3 AND SUBSTR (t, loop_counter - 2, 2) = '00')
            OR (    get_possion (loop_counter) = 0
                AND SUBSTR (n, loop_counter - 1, 1) = 1
               )
         THEN
            follow := '';
         ELSE
            follow := 'و ';
         END IF;

         IF SUBSTR (n, loop_counter - 3, 3) <> '000'
         THEN
            IF (l + m - loop_counter = 11 AND l > 12)
            THEN
               CATEGORY := 'بليار ';
            ELSIF (l + m - loop_counter = 8 AND l > 9)
            THEN
               CATEGORY := 'بليون ';
            ELSIF (l + m - loop_counter = 5 AND l > 6)
            THEN
               CATEGORY := 'مليون ';
            ELSIF (l + m - loop_counter = 2 AND l = 4
                   AND SUBSTR (n, 3, 1) = '2'
                  )
            THEN
               CATEGORY := 'الفين ';
            ELSIF (    l + m - loop_counter = 2
                   AND l = 4
                   AND SUBSTR (n, 3, 1) NOT IN ('1', '2')
                  )
            THEN
               CATEGORY := 'الاف ';
            ELSIF (l + m - loop_counter = 2 AND l = 5
                   AND SUBSTR (n, 2, 2) = '10'
                  )
            THEN
               CATEGORY := 'الاف ';
            ELSIF (l + m - loop_counter = 2 AND l > 3)
            THEN
               CATEGORY := 'الف ';
            END IF;
         END IF;

         number_in_text := CATEGORY || follow || text || number_in_text;
         CATEGORY := '';
         text := '';
      END LOOP;

      RETURN number_in_text;
   END;
END convert_number;
/

Examples
SELECT convert_number.to_text (.235, 'USD')
  FROM DUAL

      فقط  اربعة و عشرون  سنت لا غير
SELECT convert_number.to_text (12435.2, 'EGP')
  FROM DUAL

  فقط اثنا عشر الف و اربعمائة و خمسة و ثلاثون  جنيه  و عشرون  قرش لا غير
SELECT convert_number.to_text (100435.3032356, 'SR')
  FROM DUAL

  فقط مائة الف و اربعمائة و خمسة و ثلاثون  ريال  و ثلاثون  هلله لا غير

SELECT convert_number.to_text (1250000023)
  FROM DUAL

واحد بليون و مائتين و خمسون مليون و ثلاثة و عشرون


#11 أسامة موسى

أسامة موسى

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 2,381 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 23 November 2005 - 05:35 PM

:angry: مشكور على الافادة
۩ اللهـــــــــــــــــــــــم صلي على سيدنا محمد وعلـى آله وصحبه أجمـعين ۩
۩ سبحـــــــــــــــــان الله وبحمده ....... سبحــــــــــــــــــــــــان الله العظيم ۩



يمكنك زيارتي على صفحتي الخاصة بالفيس بوك على الرابط AskOsama

يمكنك زيارتي على مدونتي الجديدة على الرابط http://askossama.blogspot.com

#12 mo_gho

mo_gho

    عضو

  • الأعضــاء
  • 5 مشاركة

تاريخ المشاركة 29 November 2005 - 01:40 PM

الأخ mm_taha
لم تحدد في ال package body الfunction التي اسمها to_text
برجاء استكمال الto_text و التي اظن انها تحتوي على اسماء العملات

#13 Maan

Maan

    عضو

  • الأعضــاء
  • 33 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 15 December 2005 - 03:08 PM

يسلمو الايادي

#14 Mhamad_Wanly

Mhamad_Wanly

    عضو

  • الأعضــاء
  • 33 مشاركة
  • الاسم الأول:Mhamad
  • اسم العائلة:Wanly
  • البـلـد: Country Flag

تاريخ المشاركة 15 December 2005 - 03:14 PM

شكرا على هالمعلومات الظريفة
Mhamad_Wanly
Syria

#15 adel_hussam

adel_hussam

    عضو

  • الأعضــاء
  • 23 مشاركة

تاريخ المشاركة 18 December 2005 - 08:03 PM

بسم الله الرحمن الرحيم

الأخ/ طه

انا احد أعضاء منتدى مجموعة مستخدمي اوراكل العرب
وقد استفدت ( حامداً لله ) من الدالة التي وضعتها في المنتدى، الخاصة بتحويل الارقام الى كتابة ولكني بعد استخدامها وجدت بعض الأشياء التي يجب ان تعيد النظر فيها وهي كالتالي:
1- الدالة لا تدعم الفاصلة العشرية
2- عند كتابة الرقم (10002) يقوم بكتابته على الشكل عشرة و اثنين ين ياباني فقط لاغيـــر
3- عند كتابة الرقم (2002) يقوم بكتابته على الشكل الفين و ين ياباني فقط لاغيـــر

هل يمكنك اعادة النظر في الدالة وارساله الي على هذا الايميل وسأكون شاكرا لك

واذا لم تجد الوقت لذلك هل يمكنك شرحها لي (مفهومها والية عملها) وانا سأتكفل بالباقي وسأنشرها باسمك

وأرجو أن يكون ذلك بأسرع وقت ممكن لحاجتي الضرورية لها

أخوك
عادل حسام
اليمن