بتاريخ: 5 يوليو 200520 سنة comment_40855 الزملاء الاعضاءالسلام عليكم واعانكم الله في افادة الناس جميعاًسؤالي هو عن كيفية بناء cursor اي اجزاؤه كاملة البداية والنهاية به يفضل وضع مثال صغير كاملمع جزيل الشكر للجميع تقديم بلاغ
بتاريخ: 6 يوليو 200520 سنة comment_40932 السلام عليكم اولا الكيرسور هو عبارة عن جملة سيليكت يتم استخدامها في لغة plsqlو لذلك لعدة اغراض مثل اذا كنا نريد ان نقوم باكشن معين علي مجموعة من السجلات فنقوم بعمل كيرسور و فتحه و القيام بمل نريد عليه و يجب ان نعرف ان كل جملة سيليكت نقوم بها هي ايضا تفتح في كيرسور و لكنه كيرسور خاص باوراكل و يسمي implicit cursorاما اذا قام المطور بكتابة كيرسور خاص به و التعامل معه فيمسي explicit cursorو يوجد الكثير من المعلومات و الطرق للتعامل مع الكيرسور ممكن لنا ان نعرف الاساسي منها الان و لنأخذ مثلا مثال انك في برنامج شئون موظفين و تريد ان تزيد راتب الموظفين بناء علي معايير معينة وتوجد لديك هذه المعايير في بروسيدر تسمي raise_salللقيام بما نريده لا نستطيع استعمال السكول فقط لذلك لابد من استخدام ال plsqlسأكتب الكود ثم نشرحه DECLARE CURSOR EMP_CURSOR IS SELECT EMPNO FROM EMP; BEGIN FOR REC IN EMP_CUR LOOP RAISE_SAL(REC.EMPNO); END LOOP; END; من المثال السابق يتضح الاتي ان طالما الكيرسور هيرجع اكتر من ريكورد لذا يجب التعامل معه في لووباللوب المستخدم هنا هو اسهل و ابسط الانواع و هو الFOR LOOP وهو لا يحتاج ال ي تعريف المتغير الذي نقوم فيه باحضار الداتا من الكيرسور كما لا نضع شرط للخروج منه اذ انه يخرج عند انتهاء الداتا في الكيرسور و يجب استعماله عندما نريد ان يتم معالجة كل السجلات التي توجد بالكيرسور و اذا نظرنا الي الكود نجد ان اول خطة لاستعمال الكيرسور هي تعريفه في الجزء الخاص بالتعريف و تعريفه يكون كالتالي باستخدام كلمة CURSOR ثم اسم الكيرسور ثم كلمة IS ثم جملة السيليكت و سيمي كولون في اخر الجملة ثم في الجزء التنفيذي من البلوك نقوم باستخدام الFOR LOOP لفتح الكيرسور و احتيار كل سجل و تطبيق البروسيدر عليه و عند الانتهاء من كل السجلات سينتهي اللوب و يتم غلق الكيرسور اوتوماتيكيا و كيفية الاشارة الي الحقول التي تكون في الكيرسور تتم ب كتابة اسم المتغير في اللوب و هو هنا REC ثم اسم الكولمن الموجود في السيليكت الخاصة بالكيرسور كالاتي REC.EMPNO و اللوجيك الخاص بالكود هنا كالاتي انه يفتح الكيرسور ثم يجيب اول ريكورد يطبق عليه البروسيدر ثم يري اللوب اذا كان هناك سجلات باقية في الكيرسور اذا كان هناك يجيب السجل اللي بعده و يطبق عليه البروسيدر و هكذا حتي تنتهي الداتا و اذا انتهت يغلق الكيرسور و ينتهي اللووب ويوجد العديد من الاشياء الخاصة بالكيرسور و لكنها تحتاج الي كتب بالتوفيق تم تعديل 6 يوليو 200520 سنة بواسطة hanon_OCP تقديم بلاغ
بتاريخ: 7 يوليو 200520 سنة كاتب الموضوع comment_41015 اشكرك جزيل الشكر على الرد السريع والتوضيح, الان الصورة واضحة لدي والله يوفقك لخدمة الامة تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.