بتاريخ: 23 مارس 200718 سنة comment_94798 اود معرفة اليه إصطياد او مسك الاستثناءات الناتجه من تنفيذ عبارتي ال UPDATE , ال DELETE عند عدم وجود بيانات في الجدول اي (WHEN NO DATA FOUND ) و الية معالجتها في تطبيقات الاوراكل ديفلوبر ال FORM BUILDER ..احلام صدقه.مبرمجة كمبيوتر.صنعاء/اليمن..تم تعديل العنوان إدارة المنتدي تقديم بلاغ
بتاريخ: 24 مارس 200718 سنة comment_94893 لمعالجة الأستثناء عند عدم وجود بيانات في الجدول WHEN NO DATA FOUND تكتبين بعد أمرال select أو الupdate أو الdelete الأتي:exception when no_data_found then null;م/عبدالفتاح الشهاباليمن-صنعاء تقديم بلاغ
بتاريخ: 24 مارس 200718 سنة comment_94911 السلام عليكم و رحمة الله و بركاته الأخت الكريمة عند عمل update or delete اذا لم يتم تحديث او حذف صفوف مطابقة للشرط و اعتقد ان هذا هو ما تسألين عنه فلن ينتج عن ذلك استثناء او exception فقط سينتج عن ذلك ان عدد 0 صف من الصفوف قد تم تعديله او حذفه مثال update emp set sal=sal+100 where empno=9999; فرقم هذا الموظف 9999 غير موجود و برغم ذلك فسيتم تنفيذ الجملة بنجاح و لكن لن يتم تحديث اي صفوف و لمعرفة اذا كان قد تم التعديل او الحذف بنجاح يمكنك استخدام البارمتر sql%rowcount و هو في حالة التعديل و الحذف و حتي الادخال سيحمل عدد الصفوف التي تم تحديثها او حذفها فاذا لم يكن هناك بيانات تم تحيديثها او حذفها فسيكون ب 0و يمكن استعماله كالتالي if sql%rowcount=0 then ......................... end if; و هذا يعتبر القسم الخاص بمعالجة الاستثناء اذا لم يكن هناك بيانات في حالة التعديل او الحذفمع تمنياتي بالتوفيق تقديم بلاغ
بتاريخ: 24 مارس 200718 سنة كاتب الموضوع comment_94943 شكراً جزيلاً للاخوين شهاب و هاني على الاهتمام بالموضوع و الرد عليه. و اود ان اقول لك يا اخ شهاب انه عند تنفيذ تعليمة ال UPDATE و عدم تحقق شرط التعديل اي عدم و جود البيانات المطلوب تعديلها و كتابة تعليمة معالجة الاستثناء التاليه :WHEN NO DATA FOUND فإنه لايدخل الى هذه التعليمه اصلاً لمعالجة الاستثناء اي ان هذه التعليمه فاشله في الامساك بالاستثناء اولاً حتى نتمكن من معالجته ثانياً و قد جربت ذلك مسبقاً و هذا ما دفعني لوضع السؤال في المنتدى!!!!!اخ هاني اشكرك على الرد و اود إخبارك بإني حالياً استخدم التعليمه التاليه :IF SQL%NOT FOUND لمعرفة عدم وجود السجل المطلوب تعديله و التي تؤدي الغرض المطلوب و لكني كنت ابحث عن تعليمه خاصه بمعالجة الاستثناءات لاني لا زلت اعتقد ان طريقتي و طريقتك تخص التعامل مع ال CURSOR و ليس معالجة الاستثناءات فهل يوجد لديك حل اخر...مع جزيل الشكرو تحياتي إاليكماحلام صدقه.مبرمجة كمبيوتر.صنعاء /اليمن.. تقديم بلاغ
بتاريخ: 24 مارس 200718 سنة comment_94949 السلام عليكم أخت أحلام ٍSQL%NOT FOUND لا تستخدم في حالات الابديت و الديليت بل في السيليكت و المناسب لاستخدام مع الابديت و الديليت هو ما قلت عليه سابقا SQL%ROWCOUNTو أساسا اي جملة سيليكت و ابديت او ديليت يقوم الاوراكل بفتح cursor لها و هو ما يسمي بالimplicit cursor اي لا يوجد تعارض بين استخدام sql%rowcount مع جمل الابديت او الديليت لانها هي في الاساس عبارة عن cursorكما ان طريقة الاستخدام في الكيرسور تحتلف حيث يجب استخدام اسم الcursor الذي قمنا بتعريفه في قسم ال declare و ليس استخدام كلمة sql%...و اكرر مرة اخري انه تنفيذ جملة ابديت او ديليت مع وجود شرط لا يرجع بيانات لن يكون هناك استثناء او اكسبشن انما يمكن التحقق فقط عن طريق sql%rowcountو ملحوظة هذه الطريقة مجربة كثيرا من قبل بفاعلية مع تمنياتي بالتوفيق تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.