بتاريخ: 24 يناير 200422 سنة comment_271 ماهو الـ CURSOR الكل يعلم اهمية الـ PL/SQL في البرمجه في الـ FORMممكن يا اخوانى المساعده تقديم بلاغ
بتاريخ: 24 يناير 200422 سنة comment_295 الاخ salama11433 بالنسبة لل CURSOR عندما يكون لديك جملة select تقوم ب ارجاع اكثر من قيمة هنا لابد لك ان تقوم بفتح كيرسور خارجي و اعتقد ان هذا النوع الذي تسأل عنه في البداية يجب ان تقوم بتعريف الكيرسور بكتابة اسمه و جملة ال سيلكت التي يقوم بارجاع القيم بناء عليها وهذا يكون في جزء ال declare بعد ال begin تقوم بفتح الكيرسور وهذا كي تستطيع استخدامه ثم تقوم بعمل fetch اي الاخذ من هذا الكيرسور ولابد من القيام بهذه العملية في loop غالبا وتقوم بوضع شرط خروج من ال loop ثم تغلق الكيرسور هذا من ناحية الكود فكرتة انه عندما تريد استرجاع اكثر من صف يقوم الكيرسور بفتح مساحه في الرام ويوقم بوضع عدد الصفوف المسترجعه و في حالة الاخذ منه يقوم باسترجاع الصف الاول ثم الذي يليه و هكذا ويمكنك الاستغناء عن اغلب اجزاء الكيرسور في النوع for loopمثال مستخدم بكثرة في الفورمز هوا عند وجو list تقوم بملاء بياناتها اثناء الرن تايم اي ان البيانات ليست ثابتة ولكن نقوم باستدعائها من الداتا بيز مباشرة اثناء التشغيل نقوم بكتابة هذا الكود البسيط في تريجر هون نيو فورم انستانس]for i in (select id,name from emp) loopadd_list_element('emp_name',1,i.id,i.name);end loop;[هذا معناه اني اقول للاوراكل افتح جدول الموظفين و قم ب احضار اسمائهم و ارقامهم و لكل صف تجده قم باضافة الرقم كقيمة لل LIST و الاسم ك كاسم اظهار هذا مثال بسيط اتمني ان اكون قد اوضحت بعض معالم الكيرسور في عجالة اذا اردت معلومات شامله عنه ستجد ان شاء الله شرح له قريب ولكن سؤالك هذا مكانه منتدي ال pl/sql وليس الفورمز ولكني اجبت عن الجزء الخاص به من ناحية الفورمزتمنياتي بالتوفيق تم تعديل 24 يناير 200422 سنة بواسطة black&white تقديم بلاغ
بتاريخ: 27 يناير 200422 سنة comment_520 بسم الله الرحمن الرحيم تحية طيبة وبعد في البداية اشكر اخي العزيز black&white على هذا التوضيح وحبيت ان اضيف انه يوجد طريقة اخرى لعمل CURSOR وهي كالتالي: declare cursor primary_cur is select 'x' from SCOTT.DEPT where DEPTNO = :EMP.DEPTNO; primary_dummy char(1); begin if ( ( :EMP.DEPTNO is not null ) ) then open primary_cur; fetch primary_cur into primary_dummy; if ( not primary_cur%found ) then message('Foreign key value does not currently exist in the primary key table.'); close primary_cur; raise form_trigger_failure; end if; close primary_cur; end if; end; ولا شك فيه ان اي من الطريقتين لا تغني عن الاخرى فلكل طريقة لها استخداماتها مع تحياتي.. تقديم بلاغ
بتاريخ: 31 يناير 200422 سنة comment_690 سيفيدك الـ Cursor لو بدات فى انشاء فورم للبحث و التى ترجع المزيد من القيم فى عماية البحثمثلا لو تبحث عن الموطفين الذين اول حرف من اسمهم (أ) يوجد الكثيراى استفسار متعدد القيم يجب عمل له Cursorاتمنى ان تكون قد وصلت تقديم بلاغ
بتاريخ: 2 فبراير 200422 سنة comment_746 فقط تكملة لما ذكره الأخوة :تستخدم الأوراكل مساحة عمل في الذاكرة لتنفيذ جمل وإستعلامات الــــ SQL وحفظ نتائج هذه الإستعلامات ، وهنا تأتي فائدة الكيرسر حسب مفهوم الأوراكل حيث تسمح الكيرسر بتسمية مساحة العمل هذه وبالتالي يمكن الدخول على المعلومات الموجودة والتعامل معها كبيانات مخزنة مؤقتا في الذاكرة وهناك نوعين من الكيرسر ضمنية implicit و صريحة explicit ،وتقوم الأوراكل عادة بعمل DECLARE لكيرسر من النوع الأول implicit لجميع جمل الــ SQL التي تسترجع صف واحد !!! أما الجمل التي تسترجع أكثر من صف فنحتاج لعمل او لتعريف explicit cursor كما ذكر الأخوان في الأمثلة السابقة ..تحياتي تقديم بلاغ
بتاريخ: 3 فبراير 200422 سنة comment_772 لمزيد من التفاصيل حول الـ Cursor راجع قسم الدروس في الـPL/SQL خالد العوبثاني تقديم بلاغ
بتاريخ: 3 فبراير 200422 سنة comment_788 يمكن يفيد هذاhttp://www.araboug.org/ib/index.php?sho...&st=0entry784شكراً تقديم بلاغ
بتاريخ: 28 سبتمبر 200421 سنة comment_13700 بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته،، open.doc تقديم بلاغ
بتاريخ: 25 أكتوبر 200421 سنة comment_16348 يمكن اخى الكريم ان تقرأ الملف المرفقمع تحياتىاسامه سليمان cursor.doc تقديم بلاغ
بتاريخ: 1 أغسطس 200916 سنة comment_165162 اتفضل يا سلامه وصدقني مش ح تسأل بعد كدا عن الموضوع دا خالص . بس في حاجه اسمها refcursor هي الوحيده الي ما اتكلمت عنها في الموضوع دا بس ان شاء الله راح اكتب عنهاhttp://www.araboug.org/ib/index.php?showtopic=32835 تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.