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

كيفية عمل Loob يخزن قيمة الناتج واستخدام الناتج مره اخرى

Featured Replies

بتاريخ:

counter:=0;

while  counter<11  loob

counter:=counter+1   ; 

ca:=to_day(next_monthes(201507,'yyyymm',counter),'yyyymm') ;

end loop

 

المطلوب تخزين قيمة ca بحيث تكون على الصوره )201507و201506و201505و201504و201503)

بتاريخ:

مبدئيا

loob تبقى loop

to_day اسمها to_date

monthes تبقى months والدالة اصلا اسمها add_months واقرأ عنها شوفها بتاخد باراميتر شكله ايه .

واخيرا

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

تم تعديل بواسطة eslam elbyaly

بتاريخ:
  • كاتب الموضوع

مبدئيا

loob تبقى loop

to_day اسمها to_date

monthes تبقى months والدالة اصلا اسمها add_months واقرأ عنها شوفها بتاخد باراميتر شكله ايه .

واخيرا

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

 اولا شكرا على التعديلات

كان ال يهمنى من السؤال هو الحصول على كيفية تخزين ناتج لووب  بدووون insert in table

لاستخدام الناتج مره اخرى فى نفس التريجر

بتاريخ:

الكود اهو

DECLARE
COUNTER NUMBER := 1 ;
V VARCHAR2(90) ;
TODY DATE := TRUNC(SYSDATE) ;
DIFF NUMBER ;
BEGIN
WHILE COUNTER < 10 LOOP
V := TO_CHAR(TODY,'YYYYMM') ;
DBMS_OUTPUT.PUT_LINE(V) ;
COUNTER := COUNTER + 1 ;
DIFF := (LAST_DAY(TODY) - TODY);
TODY := TODY + (DIFF+1) ;
END LOOP ;
END;
/
 

بس نصيحة دي مش طريقة تتعلم بيها برمجة , المفروض انك تروح تبص ع الدوال وتعرف بتشتغل ازاي وبترجع ايه , والمفروض تفكر في الحل وتحاول تطبق , وحاجة تقف فالناس تساعدك هنا ,

لكن حد يعملك الحاجة كلها مش هتلاقيها دي .

بتاريخ:

الي فوق ده عشان تشوف بس انت ممكن تفكر ازاي , لكن الأصح انك تستعمل الكود ده 

DECLARE
COUNTER NUMBER := 1 ;
V VARCHAR2(90) ;
TODY DATE := TRUNC(SYSDATE) ;
BEGIN
WHILE COUNTER < 10 LOOP
V := TO_CHAR(TODY,'YYYYMM') ;
DBMS_OUTPUT.PUT_LINE(V) ;
COUNTER := COUNTER + 1 ;
TODY := ADD_MONTHS(TODY,1) ;
END LOOP ;
END;
/
وتقدر تستعمل FOR LOOP بدل الـ COUNTER

  • بعد 2 أسابيع...
بتاريخ:

يمكن استخدام array في ذلك لكي تضع القيم ومن ثم استرجاعها طبعا هذا مثال توضيحي

 declare
    type array_type is table of varchar2(100) index by binary_integer;
    component_array array_type := component_array(201503,201504,201505,201506,201507);
    i number;
    begin
      i := component_array.FIRST;
      loop
        exit when i is null;
        dbms_output.put_line(component_array(i));
       i := component_array.next(i);
     end loop;
   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.