Fathi بتاريخ: 5 يوليو 2005 تقديم بلاغ مشاركة بتاريخ: 5 يوليو 2005 الزملاء الاعضاءالسلام عليكم واعانكم الله في افادة الناس جميعاًسؤالي هو عن كيفية بناء cursor اي اجزاؤه كاملة البداية والنهاية به يفضل وضع مثال صغير كاملمع جزيل الشكر للجميع اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
هانى سند بتاريخ: 6 يوليو 2005 تقديم بلاغ مشاركة بتاريخ: 6 يوليو 2005 (معدل) السلام عليكم اولا الكيرسور هو عبارة عن جملة سيليكت يتم استخدامها في لغة 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 يوليو 2005 بواسطة hanon_OCP اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Fathi بتاريخ: 7 يوليو 2005 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 7 يوليو 2005 اشكرك جزيل الشكر على الرد السريع والتوضيح, الان الصورة واضحة لدي والله يوفقك لخدمة الامة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Osama Soliman بتاريخ: 19 يوليو 2005 تقديم بلاغ مشاركة بتاريخ: 19 يوليو 2005 يمكنك اخى الاستفادة من هذا الملف Cursors.doc اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.