الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

وظيفة تحويل الأرقام بالصيغة القياسية إلى الصيغة اللفظية العربية

Featured Replies

بتاريخ:

السلام عليكم ورحمة الله

 

 

اليكم الوظيفة بلغة PL/SQL لتحويل الأرقام بالصيغة القياسية إلى الصيغة اللفظية العربية بشرط أن يكون الرقم أقل من 999999 

create or replace FUNCTION WRITENUMINARABICWORDS
(totnetget in NUMBER)
return VARCHAR2
is
strNum VARCHAR2(10);
numInArabic VARCHAR2(100);
a7ad VARCHAR2(1);
a7adArabic VARCHAR2(50);
asharat VARCHAR2(1);
asharatArabic VARCHAR2(50);
me2at VARCHAR2(1);
me2atArabic VARCHAR2(50);
alaaf VARCHAR2(1);
alaafArabic VARCHAR2(50);
asharatolof VARCHAR2(1);
asharatolofArabic VARCHAR2(50);
me2atolof VARCHAR2(1);
me2atolofArabic VARCHAR2(50);
malayeen VARCHAR2(1);
malayeenArabic VARCHAR2(50);
numLength NUMBER;

begin
strNum := TO_CHAR(totnetget);

-- check a7ad digit
a7ad := substr(strNum,length(strNum),1);
IF a7ad != '0' THEN
IF a7ad = '1' THEN a7adArabic := 'واحد';
ELSIF a7ad = '2' THEN a7adArabic := 'اثنان';
ELSIF a7ad = '3' THEN a7adArabic := 'ثلاثة';
ELSIF a7ad = '4' THEN a7adArabic := 'أربعة';
ELSIF a7ad = '5' THEN a7adArabic := 'خمسة';
ELSIF a7ad = '6' THEN a7adArabic := 'ستة';
ELSIF a7ad = '7' THEN a7adArabic := 'سبعة';
ELSIF a7ad = '8' THEN a7adArabic := 'ثمانية';
ELSIF a7ad = '9' THEN a7adArabic := 'تسعة';
END IF;
numInArabic := a7adArabic;
END IF;
-- check asharat digit
IF(length(strNum)>1) THEN
asharat:= substr(strNum,length(strNum)-1,1);
IF asharat!= '0' THEN
IF asharat = '1' THEN
IF(a7ad = '0') THEN
asharatArabic := 'عشرة';
ELSE
IF a7ad = '1' THEN asharatArabic := 'احد عشر';
ELSIF a7ad = '2' THEN asharatArabic := 'اثنا عشر';
ELSIF a7ad = '3' THEN asharatArabic := 'ثلاثة عشر';
ELSIF a7ad = '4' THEN asharatArabic := 'أربعة عشر';
ELSIF a7ad = '5' THEN asharatArabic := 'خمسة عشر';
ELSIF a7ad = '6' THEN asharatArabic := 'ستة عشر';
ELSIF a7ad = '7' THEN asharatArabic := 'سبعة عشر';
ELSIF a7ad = '8' THEN asharatArabic := 'ثمانية عشر';
ELSIF a7ad = '9' THEN asharatArabic := 'تسعة عشر';
END IF;
END IF;
ELSIF asharat = '2' THEN
asharatArabic := 'عشرون';
ELSIF asharat = '3' THEN
asharatArabic := 'ثلاثون';
ELSIF asharat = '4' THEN
asharatArabic := 'أربعون';
ELSIF asharat = '5' THEN
asharatArabic := 'خمسون';
ELSIF asharat = '6' THEN
asharatArabic := 'ستون';
ELSIF asharat = '7' THEN
asharatArabic := 'سبعون';
ELSIF asharat = '8' THEN
asharatArabic := 'ثمانون';
ELSIF asharat = '9' THEN
asharatArabic := 'تسعون';
END IF;
ELSE
asharatArabic := a7adArabic;
END IF;
IF(a7ad != '0' and asharat != '1') THEN
numInArabic := a7adArabic || ' و ' || asharatArabic;
ELSE
numInArabic := asharatArabic;
END IF;

END IF;
-- check me2at digit
IF(length(strNum) > 2) THEN
me2at := substr(strNum,length(strNum)-2,1);
IF me2at != '0' THEN
IF me2at = '1' THEN me2atArabic := 'مائة';
ELSIF me2at = '2' THEN me2atArabic:= 'مائتان';
ELSIF me2at = '3' THEN me2atArabic:= 'ثلاثمائة';
ELSIF me2at = '4' THEN me2atArabic:= 'أربعمائة';
ELSIF me2at = '5' THEN me2atArabic:= 'خمسمائة';
ELSIF me2at = '6' THEN me2atArabic:= 'ستمائة';
ELSIF me2at = '7' THEN me2atArabic:= 'سبعمائة';
ELSIF me2at = '8' THEN me2atArabic:= 'ثمانمائة';
ELSIF me2at = '9' THEN me2atArabic:= 'تسعمائة';
END IF;

ELSE
me2atArabic := asharatArabic;
END IF;

IF(a7ad != '0' OR asharat != '0') THEN
numInArabic := me2atArabic || ' و ' || WRITENUMINARABICWORDS(TO_NUMBER(substr(strNum,length(strNum)-1,2)));
ELSE
numInArabic := me2atArabic;
END IF;

END IF;
-- alaaf digit
IF(length(strNum)>3) THEN
alaaf := substr(strNum,length(strNum)-3,1);
IF alaaf != '0' THEN
IF alaaf = '1' THEN alaafArabic := 'ألف';
ELSIF alaaf = '2' THEN alaafArabic := 'ألفان';
ELSIF alaaf = '3' THEN alaafArabic := 'ثلاثة الاف';
ELSIF alaaf = '4' THEN alaafArabic := 'أربعة الاف';
ELSIF alaaf = '5' THEN alaafArabic := 'خمسة الاف';
ELSIF alaaf = '6' THEN alaafArabic := 'ستة الاف';
ELSIF alaaf = '7' THEN alaafArabic := 'سبعة الاف';
ELSIF alaaf = '8' THEN alaafArabic := 'ثمانية الاف';
ELSIF alaaf = '9' THEN alaafArabic := 'تسعة الاف';
END IF;
ELSE
alaafArabic := me2atArabic;
END IF;

IF(a7ad != '0' OR asharat != '0' OR me2at != '0') THEN
numInArabic := alaafArabic || ' و ' || WRITENUMINARABICWORDS(TO_NUMBER(substr(strNum,length(strNum)-2,3)));
ELSE
numInArabic := alaafArabic;
END IF;
END IF;
-- asharatolof digit
IF(length(strNum)>4) THEN
asharatolof := substr(strNum,length(strNum)-4,1);
IF asharatolof != '0' THEN
IF asharatolof = '1' THEN asharatolofArabic := 'عشرة آلاف';
ELSIF asharatolof = '2' THEN asharatolofArabic := 'عشرون ألفا';
ELSIF asharatolof = '3' THEN asharatolofArabic := 'ثلاثون ألفا';
ELSIF asharatolof = '4' THEN asharatolofArabic := 'أربعون ألفا';
ELSIF asharatolof = '5' THEN asharatolofArabic := 'خمسون ألفا';
ELSIF asharatolof = '6' THEN asharatolofArabic := 'ستون ألفا';
ELSIF asharatolof = '7' THEN asharatolofArabic := 'سبعون ألفا';
ELSIF asharatolof = '8' THEN asharatolofArabic := 'ثمانون ألفا';
ELSIF asharatolof = '9' THEN asharatolofArabic := 'تسعون ألفا';
END IF;
ELSE
asharatolofArabic := alaafArabic;
END IF;

IF(a7ad != '0' OR asharat != '0' OR me2at != '0' OR alaaf != '0') THEN
numInArabic := WRITENUMINARABICWORDS(TO_NUMBER(substr(strNum,length(strNum)-4,2)))
|| CASE WHEN (asharatolof = '1' AND alaaf = '0') THEN ' آلاف ' ELSE ' ألف ' END
|| CASE WHEN (a7ad != '0' OR asharat != '0' OR me2at != '0') THEN ' و ' END
|| WRITENUMINARABICWORDS(TO_NUMBER(substr(strNum,length(strNum)-2,3)));
ELSE
numInArabic := asharatolofArabic;
END IF;
END IF;
-- me2atolof digit
IF(length(strNum)>5) THEN
me2atolof := substr(strNum,length(strNum)-5,1);
IF me2atolof != '0' THEN
IF me2atolof = '1' THEN me2atolofArabic := 'مائة ألف';
ELSIF me2atolof = '2' THEN me2atolofArabic := 'مائتا ألف';
ELSIF me2atolof = '3' THEN me2atolofArabic := 'ثلاثمائة ألف';
ELSIF me2atolof = '4' THEN me2atolofArabic := 'أربعمائة ألف';
ELSIF me2atolof = '5' THEN me2atolofArabic := 'خمسمائة ألف';
ELSIF me2atolof = '6' THEN me2atolofArabic := 'ستمائة ألف';
ELSIF me2atolof = '7' THEN me2atolofArabic := 'سبعمائة ألف';
ELSIF me2atolof = '8' THEN me2atolofArabic := 'ثمانمائة ألف';
ELSIF me2atolof = '9' THEN me2atolofArabic := 'تسعمائة ألف';
END IF;
ELSE
me2atolofArabic := asharatolofArabic ;
END IF;

IF(a7ad != '0' OR asharat != '0' OR me2at != '0' OR alaaf != '0' OR asharatolof != '0') THEN
numInArabic := WRITENUMINARABICWORDS(TO_NUMBER(substr(strNum,length(strNum)-5,3)))
|| ' ألفا و '
|| WRITENUMINARABICWORDS(TO_NUMBER(substr(strNum,length(strNum)-2,3)));
ELSE
numInArabic := me2atolofArabic;
END IF;
END IF;

-- more than 999999 is not available in this version
IF(length(strNum)>6) THEN
numInArabic := strNum;
END IF;
RETURN numInArabic;
END;

نأمل من كل شخص يستفيد منها أن لا ينسانا من صالح دعائه

 

ودمتم بخير وعافية

بتاريخ:

مشاركة رائعة مهندس محمود..

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.