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

ممكن مساعده في Procedure

Featured Replies

بتاريخ:

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

عندي بروسيجر داخله لوب  يقوم بقراءة سجلات من جدول ويقوم بنقلها وإدخالها في جدول آخر.

عندما يكون أحد السجلات التي يقرأها اللوب لايمكن إدخاله في الجدول يقف البروسيجر ولا ينتقل للسجل آخر.

سؤالي كيف أجعله ينتقل للسجل الذي يليه ويمكل الإدخال حتى لو هناك مشكله في إدخال أحد السجلات المقروءه.

مثلاً

BEGIN

FOR  I IN (SELECT * FROM TRM ) LOOP

INSERT INTO TEST_INSERT
VALUES  (I.TRM_NO,I.TRM_DESC); 
 
END  LOOP;
 
EXCEPTION

WHEN OTHERS THEN
NULL;
END;

تم تعديل بواسطة Ahmad.Hasan

بتاريخ:

next_record ;

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

أشكرك أخ eslam  على الرد

ولكن لم يتعرف عليها النظام تظهر الرساله  next_record must be declated

بتاريخ:

لا مؤاخذة معلش انا افتكرت في الفورمز , بس عموما الي انت عايزه مش واضح بالظبط
وفي حاجة عايز اسألك عليها الاول
select * from trm دي حاططها في كرسور ولا لا , لانها طبيعي بتجيب اكتر من ريكورد , وهل الكود بيضرب ايرور معاك ولا لا ؟
رد علي الحاجات دي لو سمحت وبعدين نتفاهم ,
ولو مش حاطط في كرسور حطها طبعا .

بتاريخ:

من خلال تجربتي انصحك لا تضع أبداً * 

 

بل ضع اسم Column  ثم ضعهم في جملة Insert 

 

وجرب ايش حيحصل معك

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

أنا حاطها جوا لوب ( مش لازم كيرسور). يعني بيتاخذ السجل الأول ثم يدخله في الجدول ثم السجل الآخر وهكذا.

وبعدين أنا جربتها من الفورم وماضبطت معايه كمان

بتاريخ:

أنا حاطها جوا لوب ( مش لازم كيرسور). يعني بيتاخذ السجل الأول ثم يدخله في الجدول ثم السجل الآخر وهكذا.

وبعدين أنا جربتها من الفورم وماضبطت معايه كمان

لا مؤاخذة يا كبير , فاتتني دي ,

المشكلة كلها انك مش بتقولنا مظبططش ليه ,

المفروض تشيل الـ exception  الي انت حطه ده , وتشوف ايه الايرور الي بيطلع , ساعتها هنعرف ام المشكلة فين ان شاء الله ونحلها

باذن الله

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

الأخ eslam

أنا أعرف الخطأ إيش وغيش المشكله

سؤالي كيف أجعل البروسيجر في حالة وجود خطأ ولم يدخل السجل يتجاهله ويكمل اللوب ويأخذ السجل الآخر.

بتاريخ:

اعتقد بالكيرسور مش حيتجاهله

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

طيب ماهي الطريقه.

بإختصار إذا عاوز أنقل 10 سجلات من جدول لآخر وعندما يكون هناك مشكله في سجل يتجاهله وينتقل للسجل الآخر.

بتاريخ:

طيب ماهي الطريقه.

بإختصار إذا عاوز أنقل 10 سجلات من جدول لآخر وعندما يكون هناك مشكله في سجل يتجاهله وينتقل للسجل الآخر.

ما هو ايه المشكلة الي هتقابله بالظبط ؟ لازم نعرفها الاول .

يعني مثلا لو مش عارف يدخل الريكورد يعني مثلا لو مش عارف يحفظ عشان في primary key  والقيمة هتتكر فيه

هتشوف رقم الايرور كام , وتعمل تريجر on-error علي البلوك مثلا وتكتب فيه

if error_code = 5555

then

next_record ;

insert into table values ............

او ممكن تلاقي exception خاص بالموضوع ده

بتاريخ:

اخي الكريم
حضرتك اعمل الexception داخل بلوك خاص بالانسرت فقط
بحيث لما يحدث خطأ فى الانسرت يخرج الى البلوك الرئيسي ويكمل اللوب كالتالي
 

BEGIN

 

FOR  I IN (SELECT * FROM TRM ) LOOP


 begin
INSERT INTO TEST_INSERT
VALUES  (I.TRM_NO,I.TRM_DESC); 
exception
when others then null;
end ;
 

END  LOOP;



END;
بتاريخ:

 

اخي الكريم

حضرتك اعمل الexception داخل بلوك خاص بالانسرت فقط

بحيث لما يحدث خطأ فى الانسرت يخرج الى البلوك الرئيسي ويكمل اللوب كالتالي

 

BEGIN

 

FOR  I IN (SELECT * FROM TRM ) LOOP


 begin
INSERT INTO TEST_INSERT
VALUES  (I.TRM_NO,I.TRM_DESC); 
exception
when others then null;
end ;
 

END  LOOP;



END;

طيب ما هو كده اول ما يقابل الـ EXCEPTION مش هيكمل اللوب

انا رأيي , والله اعلم انك تعمل Nested Blocks

block تكتب فيه اللوب جوه البلوك الرئيسي , والـ exception جوه البلوك الرئيسي , يقوم لما يظهر الـ exception في اللوب , البلوك يدور علي handler ,

يقوم ميلقهوش , فيدور عليه في البلوك اللي برة , يقوم يتهندل , ويرجع يكمل اللوب , والله اعلم

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

أشكرك ياأخ  mohamedali03 كثير الشكر.

بتاريخ:

العفو اخي الكريم
نحن نتشرف بك

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

فعلا حل دا هو nested block وانى اعمل ال exception فى ال inner block علشان لو حصل يطلع لل outer block  كلام مظبوط جدا

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

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

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

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

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

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.