إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

how to make cursor


3 رد (ردود) على هذا الموضوع

#1 Fathi

Fathi

    عضو

  • الأعضــاء
  • 16 مشاركة

تاريخ المشاركة 05 July 2005 - 11:58 AM

الزملاء الاعضاء
السلام عليكم واعانكم الله في افادة الناس جميعاً
سؤالي هو عن كيفية بناء cursor اي اجزاؤه كاملة البداية والنهاية به
يفضل وضع مثال صغير كامل
مع جزيل الشكر للجميع

#2 هانى سند

هانى سند

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 743 مشاركة

تاريخ المشاركة 06 July 2005 - 09:58 AM

السلام عليكم
اولا الكيرسور هو عبارة عن جملة سيليكت يتم استخدامها في لغة 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
و اللوجيك الخاص بالكود هنا كالاتي
انه يفتح الكيرسور ثم يجيب اول ريكورد يطبق عليه البروسيدر ثم يري اللوب اذا كان هناك سجلات باقية في الكيرسور اذا كان هناك يجيب السجل اللي بعده و يطبق عليه البروسيدر و هكذا حتي تنتهي الداتا و اذا انتهت يغلق الكيرسور و ينتهي اللووب
ويوجد العديد من الاشياء الخاصة بالكيرسور و لكنها تحتاج الي كتب :D
بالتوفيق

تم التعديل بواسطة hanon_OCP, 06 July 2005 - 10:01 AM.


#3 Fathi

Fathi

    عضو

  • الأعضــاء
  • 16 مشاركة

تاريخ المشاركة 07 July 2005 - 01:45 PM

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

#4 Osama Soliman

Osama Soliman

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,611 مشاركة
  • الاسم الأول:Osama
  • اسم العائلة:Soliman
  • البـلـد: Country Flag
  • المنصب الحالي:Oracle Technical Consultant - Asfour Crystal International

تاريخ المشاركة 19 July 2005 - 11:08 AM

يمكنك اخى الاستفادة من هذا الملف

ملفات مرفقة

  • ملف مرفق  Cursors.doc   189كيلو   129 عدد مرات التحميل

وقل رب زدنى علماً
Osama M. Soliman
Oracle Certified Professional
Oracle Technical Consultant

 Asfour Crystal International
Cairo - Egypt
Osama.Soliman@hotmail.com
Osama.Soliman@asfourcystal.com