الانتقال إلى المحتوى
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

بتاريخ:

مساعده في البوبيلدر كنت عايز حد يساعدني في عمل اسكربيت تفقيط و تحويل الارقام الي كتابه ضروري يا شباب بعد ازنكم بجد الموضوع تعبني جامد و شكرآ جزيلاً

بتاريخ:

بصراحة مش فاهم اه هوا البوبيلدر لكن لو محتاج ملف التحويل بالجافا  او procedure ف الداتا بيز ؟ 
الصراحة مش عارف ازاي ارفع الملفين لكن هضعهم أكواد

بتاريخ:

package test;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class ArabicLiteralNumberParser {
    private static final String ZERO = "صفر";
    private static final String ONE = "واحد";
    private static final String TWO = "إثنان";
    private static final String THREE = "ثلاثة";
    private static final String FOUR = "أربعة";
    private static final String FIVE = "خمسة";
    private static final String SIX = "ستة";
    private static final String SEVEN = "سبعة";
    private static final String EIGHT = "ثمانية";
    private static final String NINE = "تسعة";
    private static final String TEN = "عشرة";
    private static final String TWENTY = "عشرون";
    private static final String THIRTY = "ثلاثون";
    private static final String FOURTY = "أربعون";
    private static final String FIFTY = "خمسون";
    private static final String SIXTY = "ستون";
    private static final String SEVENTY = "سبعون";
    private static final String EIGHTY = "ثمانون";
    private static final String NINETY = "تسعون";
    private static final String HUNDRED = "مائة";
    private static final String THOUSAND = "الف";
    private static final String MILLION = "مليون";
    private static final String MILLIARD = "مليار";
    private static final String BILLION = "بليون";
    private static final String BILLIARD = "بليار";
    private static final String TRILLION = "تريليون";
    private static final Map<Long, String> namesMap;

    static {
        namesMap = new HashMap<Long, String>();
        namesMap.put(0l, ZERO);
        namesMap.put(1l, ONE);
        namesMap.put(2l, TWO);
        namesMap.put(3l, THREE);
        namesMap.put(4l, FOUR);
        namesMap.put(5l, FIVE);
        namesMap.put(6l, SIX);
        namesMap.put(7l, SEVEN);
        namesMap.put(8l, EIGHT);
        namesMap.put(9l, NINE);
        namesMap.put(10l, TEN);
        namesMap.put(20l, TWENTY);
        namesMap.put(30l, THIRTY);
        namesMap.put(40l, FOURTY);
        namesMap.put(50l, FIFTY);
        namesMap.put(60l, SIXTY);
        namesMap.put(70l, SEVENTY);
        namesMap.put(80l, EIGHTY);
        namesMap.put(90l, NINETY);
        namesMap.put(100l, HUNDRED);
        namesMap.put(1000l, THOUSAND);
        namesMap.put(1000000l, MILLION);
        namesMap.put(1000000000l, MILLIARD);
        namesMap.put(1000000000000l, BILLION);
        namesMap.put(1000000000000000l, BILLIARD);
        namesMap.put(1000000000000000000l, TRILLION);
    }
    private static String parse(long a) {
        StringBuffer buf = new StringBuffer(Long.valueOf(a).toString());
        buf.reverse();
        int index = 0;
        boolean negative;
        int len = (negative = buf.charAt(buf.length() - 1) == '-') ? buf.length() - 1 : buf.length();
        String[] name = new String[len];
        long unitValue = 0;
        while (index < len) {
            Long n = Long.valueOf(String.valueOf(buf.charAt(index)));
            int decimalPos = index % 3;
            if (decimalPos == 0) {
                unitValue = (Double.valueOf(Math.pow(10, index)).longValue());
            }
            int decimalPlace = (Double.valueOf(Math.pow(10, decimalPos)).intValue());
            switch (decimalPlace) {
                case 1:
                    if (unitValue > 1l && index + 1 == len) {
                        switch (n.intValue()) {
                            case 1:
                                name[index] = namesMap.get(unitValue);
                                break;
                            case 2:
                                name[index] = namesMap.get(unitValue).concat("ان");
                                break;
                            default:
                                if (unitValue == 1000l) {
                                    name[index] = namesMap.get(n) + " " + "الاف";
                                } else if (unitValue == 1000000l) {
                                    name[index] = namesMap.get(n) + " " + "ملايين";
                                } else {
                                    name[index] = namesMap.get(n) + " " + namesMap.get(unitValue) + "ات";
                                }
                        }
                    } else {
                        name[index] = namesMap.get(n);
                    }
                    break;
                case 10:
                    String tmp = name[index - 1];
                    if (n == 1l) {
                        if (tmp.equals(ONE)) {
                            tmp = tmp.substring(1, tmp.length());
                        } else if (tmp.equals(TWO)) {
                            tmp = tmp.substring(0, tmp.length() - 1);
                        }
                    }
                    if (unitValue > 1l && index + 1 == len) {
                        if (n == 1 && tmp.equals(ZERO)) {
                            if (unitValue == 1000l) {
                                name[index] = TEN + "الاف ";
                            } else if (unitValue == 1000000l) {
                                name[index] = TEN + "ملايين ";
                            } else {
                                name[index] = TEN + " " + namesMap.get(unitValue) + "ات";
                            }
                        } else {
                            name[index] = namesMap.get(n * 10l) + " " + namesMap.get(unitValue);
                        }
                    } else {
                        name[index] = namesMap.get(n * 10l);
                    }
                    if (n != 0l) {
                        name[index - 1] = name[index];
                        name[index] = tmp;
                    }
                    break;
                case 100:
                    String s;
                    if (n > 2) {
                        s = namesMap.get(n);
                        s = s.substring(0, s.length() - (n == 8 ? 2 : 1)) + HUNDRED;
                    } else {
                        s = n == 2 ? "مائتان" : namesMap.get(n * 100);
                    }
                    if (unitValue > 1l && !name[index - 2].equals(ZERO)) {
                        Iterator i = namesMap.keySet().iterator();
                        while (i.hasNext()) {
                            Long val = (Long) i.next();
                            if (namesMap.get(val).equals(name[index - 2])) {
                                if (val > 2l && val <= 10l) {
                                    if (unitValue == 1000l) {
                                        name[index - 2] = name[index - 2] + " " + "الاف";
                                    } else if (unitValue == 1000000l) {
                                        name[index - 2] = name[index - 2] + " " + "ملايين";
                                    } else {
                                        name[index - 2] = name[index - 2] + " " + namesMap.get(unitValue) + "ات";
                                    }
                                } else {
                                    name[index - 2] = name[index - 2] + " " + namesMap.get(unitValue);
                                }
                                break;
                            }
                        }
                    } else if (unitValue > 1l && n != 0) {
                        s = s + " " + namesMap.get(unitValue);
                    }
                    name[index] = s;
            }
            index++;
        }

        String s = "";
        for (int i = 0; i < len; i++) {
            if (name[i].equals(ZERO)) {
                continue;
            }
            name[i] = name[i].trim();
            s = name[i] + (!s.isEmpty() && !(s.startsWith(TEN) && !name[i - 1].equals(ZERO)) ? " و" : " ") + s;
        }
        return s.isEmpty() ? ZERO : (negative ? "سالب " + s : s).trim();
    }
    public static String literalValueOf(Number a) {
        if (a.doubleValue() > Long.MAX_VALUE) {
            return " اكبر من " + parse(Long.MAX_VALUE);
        }
        a = String.valueOf(a).toLowerCase().contains("e") ? a.longValue() : a;
        String[] array = String.valueOf(a).split("\\.");
        long i = Long.valueOf(array[0]);
        long f = array.length == 2 ? Long.valueOf(array[1]) : 0;
        int fractSize = f > 0 ? array[1].length() : 0;
        String integralPart = (i != 0 || f == 0) ? parse(i) : "";
        String fractionalPart = f > 0 ? parse(f) + " من " + parse(Double.valueOf(Math.pow(10, fractSize)).longValue()) : "";
        return integralPart + (f * i != 0 ? " و " : "") + fractionalPart;
    }
///For testing, please remove!
    public static void main(String[] args) {
        System.out.println(literalValueOf(Long.MAX_VALUE));
    }
}
بتاريخ:

دي كانت الجافا والتالي هي function في الداتا بيز


FUNCTION AR_SP_OUT (amount number) RETURN VARCHAR2 IS
 amnt_num number := amount;

 amnt_char varchar2(50);
 amnt1_char varchar2(50);

 frac_char varchar2(50);
 amnt varchar2(50);
 amnt1 varchar2(50);

 sub1 varchar2(300) := null;
 sub2 varchar2(300) := null;
 sub3 varchar2(300) := null;
 sub4 varchar2(300) := null;
 sub5 varchar2(300) := null;

 plural VARCHAR2(1);

 ln number;
 ln1 number;  
 ln2 number;

 fc number;
/* ------------------------------------------------------------ */

 halala varchar2(10):='قرشاً';
 halalat varchar2(10):='قروش';

 riyal varchar2(8):='جنيهاً';
 riyalat varchar2(10):= 'جنيهات';

 miyat VARCHAR2(3) := 'مئة';
 miyatain VARCHAR2(5) := 'مئتين';

 alf VARCHAR2(3):= 'الف';
 alfain VARCHAR2(5) := 'الفين';
 alaf VARCHAR2(4) := 'آلاف';

 million VARCHAR2(5) := 'مليون';
 millionain VARCHAR2(7):= 'مليونين';
 malayeen VARCHAR2(6) := 'ملايين';

 miliar VARCHAR2(5) := 'مليار';
 miliarain VARCHAR2(7) := 'مليارين';
 miliarat VARCHAR2(7) := 'مليارات';

 wa VARCHAR2(3) := 'و';
/* ------------------------------------------------------------ */

 function is_zero(amnt VARCHAR2, l number) return boolean is
/* ------------------------------------------------------------ */
  stat boolean := true;
  m number := 1;
 begin
  while m <= l loop
    if substr(amnt,m,1) != 0 then
      stat := false;
      exit;
    end if;
    m := m + 1;
  end loop;
 return(stat);
 end;
/* ------------------------------------------------------------ */

 function ONES(num number) return VARCHAR2 is
/* ------------------------------------------------------------ */
 begin
  if num = 0 then
   return(null);
  elsif num = 1 then
    return('واحد');
  elsif num = 2 then
    return('اثنين');
  elsif num = 3 then
    return('ثلاثة');
  elsif num = 4 then
    return('اربعة');
  elsif num = 5 then
    return('خمسة');
  elsif num = 6 then
    return('ستة');
  elsif num = 7 then
    return('سبعة');
  elsif num = 8 then
    return('ثمانية');
  elsif num = 9 then
    return('تسعة');
  end if;
 end;
/* ------------------------------------------------------------ */

 function TENS(num number) return VARCHAR2 is
/* ------------------------------------------------------------ */
 begin
  if num = 0 then
   return(null);
  elsif num = 11 then
   return('احدى عشر');
  elsif num = 12 then
   return('اثنى عشر');
  elsif num = 13 then
   return('ثلاثة عشر');
  elsif num = 14 then
   return('اربعة عشر');
  elsif num = 15 then
   return('خمسة عشر');
  elsif num = 16 then
   return('ستة عشر');
  elsif num = 17 then
   return('سبعة عشر');
  elsif num = 18 then
   return('ثمانية عشر');
  elsif num = 19 then
   return('تسعة عشر');
  elsif num = 10 or num = 1 then
   return('عشرة');
  elsif num = 20 then
   return('عشرين');
  elsif num = 30 then
   return('ثلاثين');
  elsif num = 40 then
   return('اربعين');
  elsif num = 50 then
   return('خمسين');
  elsif num = 60 then
   return('ستين');
  elsif num = 70 then
   return('سبعين');
  elsif num = 80 then
   return('ثمانين');
  elsif num = 90 then
   return('تسعين');
  end if;
 end ;
/* ------------------------------------------------------------ */

 function HUNDRED(num number) return VARCHAR2 is
/* ------------------------------------------------------------ */

 begin
 if num = 100 then
  return(miyat);
 elsif num = 200 then
  return(miyatain);
 elsif num = 300 then
  return('ثلاثمائة');
 elsif num = 400 then
  return('اربعمائة');
 elsif num = 500 then
  return('خمسمائة');
 elsif num = 600 then
  return('ستمائة');
 elsif num = 700 then
  return('سبعمائة');
 elsif num = 800 then
  return('ثمانمائة');
 elsif num = 900 then
  return('تسعمائة');
 end if;
 end;
/* ------------------------------------------------------------ */

 function one_digit(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
 begin
 if amnt = 0 then return(null);
 elsif amnt = 1 then return ('جنيهاً واحداً');
 elsif amnt = 2 then return('جنيهين');
 else return(ONES( to_number(amnt))||' '||riyalat);
 end if;
 end;
/* ----------  @ ÿÿÿش    l   -------------------------------------------------- */

 function two_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(30) := null;
  sub2 varchar2(30) := null;
  first_digit VARCHAR2(1);
  second_digit VARCHAR2(1);
 begin
 first_digit := substr(amnt,1,1);
 second_digit := substr(amnt,2,1);

 if first_digit = 0 then
--    return(one_digit(second_digit));
--    sub1  := null;
       sub1 := one_digit(second_digit);
 end if;
if first_digit = 1 or second_digit = 0 then
-- if first_digit not null and second_digit = 0 then

   sub1 := TENS( to_number(amnt));
 else
  sub1 := ONES( to_number(second_digit));
  sub2 := TENS( to_number(first_digit) * 10);
 end if;
 if sub2 is not null then
  sub1 := sub1 || ' ' || wa;
 end if;
 return(sub1 || ' ' || sub2);
 end ;
/* ------------------------------------------------------------ */

function one_digit_h(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
 begin

 if amnt = 0 then return(null);
 elsif amnt = 1 then return ('قرشاً واحداً');
 elsif amnt = 2 then return('قرشين');
 else return(ONES( to_number(amnt))||' '||halalat);
 end if;
 end;
/* ------------------------------------------------------------ */

function two_digits_h(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(30)  := null;
  sub2 varchar2(30) := null;

  first_digit VARCHAR2(1);
  second_digit VARCHAR2(1);
 begin
 first_digit := substr(amnt,1,1);
 second_digit := substr(amnt,2,1);

 if first_digit <> 1  and second_digit <> 0 then
   sub1 := ONES( to_number(second_digit));
   sub2 := TENS( to_number(first_digit) * 10);

if sub2 is not null  then
     sub1 := sub1 || ' ' || wa;
 end if;

 return(sub1||' '|| sub2 || ' ' || halala);

 end if;

 if first_digit = 0 then
--    sub2 := one_digit_h(second_digit);
    return(one_digit_h(second_digit));
 end if;

if first_digit = 1  or second_digit = 0 then
   sub1 := TENS( to_number(amnt));
   sub2 := null;
   return(sub1|| ' ' || halala);
 end if;

 if  first_digit > 1  or  second_digit = 0 then
   sub1 := TENS( to_number(amnt)*10);
   sub2 := null;
   return(sub1|| ' ' || halala);
 end if;

 end ;
/* ------------------------------------------------------------ */

 function three_digits (amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(500) := null;
  sub2 varchar2(500) := null;
  first_digit VARCHAR2(1);
  second_digit VARCHAR2(1);
 begin
 first_digit := substr(amnt,1,1);
 if first_digit = 0 then
  return(two_digits( substr(amnt,2,2)));
 end if;
 sub1 := HUNDRED( to_number(first_digit)*100);
 if is_zero( substr(amnt,2,2), 2) then
  sub2 := null;
 else
  sub1 := sub1 || ' ' || wa;
  sub2 := two_digits( substr(amnt,2,2));
 end if;
 return(sub1||' '||sub2);
 end;
/* ------------------------------------------------------------ */

 function four_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(200) := null;
  sub2 varchar2(200) := null;
 begin
 if substr(amnt,1,1) = 0 then
  return(three_digits(substr(amnt,2,3)));
 end if;
 if substr(amnt,1,1) = 1 then
    sub1 := alf;
    sub2 := null;
 elsif substr(amnt,1,1) = 2 then
    sub1 := alfain;
    sub2 := null;
 else
   sub1 := ONES( to_number(substr(amnt,1,1))) || ' ' || alaf;
    sub2 := null;
 end if;
if  to_number(substr(amnt,2,3)) > 0 then
  sub2 := three_digits(substr(amnt,2,3));
end if;
 if sub2 is not null then
  sub1 := sub1 || ' ' || wa || ' ' || sub2;
 end if;
 return(sub1);
 end;
/* ------------------------------------------------------------ */

 function five_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(200) := null;
  sub2 varchar2(200) := null;

 begin
 if substr(amnt,1,1) = 0 then
  return(four_digits(substr(amnt,2,4)));
 end if;
 sub1 := two_digits( substr(amnt,1,2));
 if substr(amnt,1,2) = 1  
                then     sub1 := sub1 ||' '||alaf;
 else
    sub1 := sub1 ||' '||alf;
 end if;
/*if  to_number(substr(amnt,2,4)) > 0 then
 sub2 := three_digits(substr(amnt,3,3));
end if;*/
if  to_number(substr(amnt,3,3)) > 0 then
 sub2 := three_digits(substr(amnt,3,3));
end if;

 if sub2 is not null then
   sub1 := sub1 || ' ' || wa|| ' ' || sub2;
 end if;
 return(sub1);
 end;
/* ------------------------------------------------------------ */

 function six_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(200) := null;
  sub2 varchar2(200) := null;
 begin
 if substr(amnt,1,1) = 0 then
  return(five_digits(substr(amnt,2,5)));
 end if;
 if substr(amnt,2,2) = '01' then
   sub1 := three_digits( '100');
   sub1 := sub1 || ' ' || wa || ' ' || alf;
 elsif substr(amnt,2,2) = '02' then
   sub1 := three_digits( '100');
   sub1 := sub1 || ' ' || wa || ' ' || alfain;
 elsif substr(amnt,2,2) = '10' then
   sub1 := three_digits(substr(amnt,1,3))||' '||alaf;
  else
   sub1 := three_digits(substr(amnt,1,3))||' '||alf;
 end if;
/*if  to_number(substr(amnt,2,5)) > 0 then
 sub2 := three_digits(substr(amnt,4,3));
end if;*/
if  to_number(substr(amnt,4,3)) > 0 then
 sub2 := three_digits(substr(amnt,4,3));
end if;


 if sub2 is not null then
   sub1 := sub1 || ' ' || wa || ' ' || sub2;
 end if;
 return(sub1);
 end;
/* ------------------------------------------------------------ */

 function seven_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(200) := null;
  sub2 varchar2(200) := null;
 begin
 if substr(amnt,1,1) = 0 then
  return(six_digits(substr(amnt,2,6)));
 end if;
 if substr(amnt,1,1) = 1 then
    sub1 := million;
 elsif substr(amnt,1,1) = 2 then
   sub1 := millionain;
 else
   sub1 := ONES(substr(amnt,1,1))||' '||malayeen;
 end if;
if  to_number(substr(amnt,2,6)) > 0 then
 sub2 := six_digits( substr(amnt,2,6));
end if;

 if sub2 is not null then
   sub1 := sub1 || ' ' || wa || ' ' || sub2;
 end if;
 return(sub1);
 end;
/* ------------------------------------------------------------ */

 function eight_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(200) := null;
  sub2 varchar2(200) := null;
 begin
 if substr(amnt,1,1) = 0 then
  return(seven_digits(substr(amnt,2,7)));
 end if;
 sub1 := two_digits(substr(amnt,1,2));
 if substr(amnt,1,2) = '10' then sub1 := sub1 ||' '||malayeen;
 else
  sub1 := sub1 ||' '||million;
 end if;
if  to_number(substr(amnt,2,7)) > 0 then
 sub2 := six_digits( substr(amnt,3,6));
end if;

 if sub2 is not null then
   sub1 := sub1 || ' ' || wa || ' ' || sub2;
 end if;
 return(sub1);
 end;
/* ------------------------------------------------------------ */

 function nine_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(200) := null;
  sub2 varchar2(200) := null;
 begin
 if substr(amnt,1,1) = 0 then
  return(eight_digits(substr(amnt,2,8)));
 end if;
 sub1 := HUNDRED(to_number(substr(amnt,1,1))*100);
 if substr(amnt,2,1) = 0 then
  if substr(amnt,3,1) = 1 then
   sub1 := sub1|| ' ' || wa|| ' ' || ONES(1)||' '||million;
  elsif substr(amnt,3,1) = 2 then
   sub1 := sub1|| ' ' || wa||' '||millionain;
  elsif substr(amnt,2,2) = '00' then
   sub1 := sub1 ||' '||million;
  else
   sub1 := sub1|| ' ' || wa||' '||ONES( to_number(substr(amnt,3,1)))||' '||malayeen;
  end if;
 elsif substr(amnt,2,2) = '10' then
  sub1 := sub1 || ' ' || wa||' '||TENS(to_number(substr(amnt,2,2)))|| ' '||malayeen;
 else
  sub1 := sub1|| ' ' || wa ||' '||two_digits(substr(amnt,2,2))|| ' '||million;
 end if;

if  to_number(substr(amnt,4,6)) > 0 then
 sub2 := six_digits( substr(amnt,4,6));
end if;

 if sub2 is not null then
   sub1 := sub1 || ' ' || wa || ' ' || sub2;
 end if;
 return(sub1);
 end;
/* ------------------------------------------------------------ */

 function ten_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------  ` ÿÿÿش  ! l   ------------------------------ */
  sub1 varchar2(200) := null;
  sub2 varchar2(200) := null;
 begin
 if substr(amnt,1,1) = 0 then
  return(nine_digits(substr(amnt,2,9)));
 end if;
 if substr(amnt,1,1) = 1 then
    sub1 := miliar;
 elsif substr(amnt,1,1) = 2 then
   sub1 := miliarain;
 else
   sub1 := ONES(substr(amnt,1,1))||' '||miliarat;
 end if;
if  to_number(substr(amnt,4,7)) > 0 then
 sub2 := nine_digits( substr(amnt,2,9));
end if;

 if sub2 is not null then
   sub1 := sub1 || ' ' || wa||  ' ' || sub2;
 end if;
 return(sub1);
 end;
/* ------------------------------------------------------------ */

 function eleven_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(200) := null;
  sub2 varchar2(200) := null;
 begin
 if substr(amnt,1,1) = 0 then
  return(ten_digits(substr(amnt,2,10)));
 end if;
 sub1 := two_digits(substr(amnt,1,2));
 if substr(amnt,1,2) = '10' then
   sub1 := sub1 ||' '||miliarat;
 else
   sub1 := sub1||' '||miliar;
 end if;
if  substr(amnt,4,8) > 0 then
 sub2 := nine_digits( substr(amnt,3,9));
end if;

 if sub2 is not null then
   sub1 := sub1 || ' ' || wa ||  ' ' || sub2;
 end if;
 return(sub1);
 end;
/* ------------------------------------------------------------ */

 function twelve_digits(amnt VARCHAR2) return VARCHAR2 is
/* ------------------------------------------------------------ */
  sub1 varchar2(200) := null;
  sub2 varchar2(200) := null;
 begin
 if substr(amnt,1,1) = 0 then
  return(eleven_digits(substr(amnt,2,11)));
 end if;
 sub1 := HUNDRED(to_number(substr(amnt,1,1))*100);
 if substr(amnt,2,1) = 0 then
  if substr(amnt,3,1) = 1 then
   sub1 := sub1|| ' ' || wa ||  ' ' || ONES(1)||' '||miliar;
  elsif substr(amnt,3,1) = 2 then
   sub1 := sub1|| ' ' || wa ||' '||miliarain;
  elsif substr(amnt,2,2) = '00' then
   sub1 := sub1 ||' '||miliar;
  else
   sub1 := sub1|| ' ' || wa||' '||ONES( to_number(substr(amnt,3,1)))||' '||miliarat;
  end if;
 elsif substr(amnt,2,2) = '10' then
  sub1 := sub1 || ' ' ||  wa||' '||TENS(to_number(substr(amnt,2,2)))|| ' '||miliarat;
 else
  sub1 := sub1|| ' ' || wa ||' '||two_digits(substr(amnt,2,2))|| ' '||miliar;
 end if;
if  to_number(substr(amnt,4,9)) > 0 then
 sub2 := nine_digits( substr(amnt,4,9));
end if;

 if sub2 is not null then
   sub1 := sub1 || ' ' || wa ||  ' ' || sub2;
 end if;
 return(sub1);
 end;
/* ------------------------------------------------------------ */

 procedure check_riyals(amnt VARCHAR2) is
/* ------------------------------------------------------------ */
 begin
 if amnt = '10'  then
    sub1 := sub1 ||' '||riyalat;
 elsif amnt between '01' and '09' then
    null;
 elsif ln = 1 then
    null;
 else
    sub1 := sub1 ||' '||riyal;
 end if;
 if ln1 > 0  then
     sub1 := sub1  ||  ' ' || wa ||  ' ' || sub5 ;
     end if;
 end;

BEGIN   -- main function starts --
 amnt_char := to_char(amnt_num);
 ln1 := instr(amnt_char,'.');
 if ln1 > 0  then
       frac_char := substr(amnt_char,ln1+1,2);
       amnt_char := substr(amnt_char,1,ln1-1);
 end if;

 ln := NVL(NVL(length(amnt_char), 0), 0);
 ln2 := NVL(NVL(length(frac_char ), 0), 0);
 if ln1 > 0 then
    sub5 := two_digits_h(frac_char);
 end if;
 if ln = 1 then
    sub1 :=  one_digit(amnt_char);
    check_riyals(amnt_char);
 elsif ln= 2 then
    sub1 := two_digits(amnt_char);
    check_riyals(amnt_char);
 elsif ln = 3 then
    sub1 := three_digits(amnt_char);
    check_riyals(substr(amnt_char,2,2));
 elsif ln = 4 then
    sub1 := four_digits(amnt_char);
    check_riyals(substr(amnt_char,3,2));
 elsif ln = 5 then
     sub1 := five_digits(amnt_char);
     check_riyals(substr(amnt_char,4,2));
 elsif ln = 6 then
     sub1 := six_digits(amnt_char);
     check_riyals(substr(amnt_char,5,2));
 elsif ln = 7 then
     sub1 := seven_digits(amnt_char);
     check_riyals(substr(amnt_char,6,2));
 elsif ln = 8 then
     sub1 := eight_digits(amnt_char);
     check_riyals(substr(amnt_char,7,2));
 elsif ln = 9 then
     sub1 := nine_digits(amnt_char);
     check_riyals(substr(amnt_char,8,2));
 elsif ln = 10 then
         sub1 := ten_digits(amnt_char);
     check_riyals(substr(amnt_char,9,2));
 elsif ln = 11 then
     sub1 := eleven_digits(amnt_char);
     check_riyals(substr(amnt_char,10,2));
 elsif ln = 12 then
     sub1 := twelve_digits(amnt_char);
     check_riyals(substr(amnt_char,11,2));
 elsif ln = 0 and ln2 > 0  then
    sub1 := two_digits_h(frac_char);
 else
    return('  لا يمكن استخدام أكثر من 12 رقم ... شكراً '  );
 end if;

 return( sub1);

END AR_SP_OUT;
بتاريخ:

أتمني أكون ساعدتك 

بتاريخ:

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

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

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

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

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

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.