بتاريخ: 21 يناير 200818 سنة comment_121004 الاخوة الكرامانا عايز اعمل dynamic queryانا باعملها لما ترجع سجل فقطبس انا عايز اعملها ترجع اكتر من سجل زي الcursor كدهواخد البيانات اللي جايه منها واتعامل معاهاارجو الافادهشكرا تقديم بلاغ
بتاريخ: 21 يناير 200818 سنة comment_121011 بص ياباشا ال cursor عباره عن تطوير لجملة الاستعلام العاديه و ذلم لما يحتويه من مميزات مثل 1- التحكم فى عدد السجلات2- وقف عملية دفع البيانات بنأن على شرط معين 3- يمكن تخزينه فى الذاكره مما يمكن من التعامل معه فى اى وقت .4- يوجد له سمات .5- يمكن ان يسترحع اكثر من سجل .6- يوجد منه انواع .7- يمكن التحكم فى عدد السجلات المرحعه اليك شرح اتمنى ان يكون بسيطفى البدايه يجب ان تعرف ان ال cursor يتكون من ثلاث مناطق هم1- التعريف : (declare) ويقصد بها تعريف جمله الاستعلام و تعريف اى متغير يمكن التعال معه داخل ال cursor 2- بداية التعامل مع الكود : ( bigen) و هنا نقوم بفتح قناه تتعامل مع السجلات التى هى مخزنه فى الذاكره و عمل اى عمليات ترغبها فى السجلات او استخدام السمات التى يمكن التعامل معها من خلال المؤشر (cursor) 3- معالجة الاخطاء :(exception) و هنا يتم معالجة الاخطاء التى هى من المتوقع ان تظهر اثان تنفيذ المؤشرو اليك الكود declare cursor ew is تعريف اسم المؤشر select ename جملة الاستعلام و يمكن ان تكون بشرط from EMp; begin open ew; التعامل مع السجلات بواسطة اسم المؤشر loop عملية loop ليتم دفع كل السجلات fetch ew into :v_ename; يتم تحديد ال object التى تظهر على الشاشة exit when ew%notfound; الخروج من عملية اللدوران حين انتهاء السجلات end loop; انهاء الدوران close ew; غلق المؤشر end; انهاء المؤشر بالكامل ايهاب وجدى تم تعديل 21 يناير 200818 سنة بواسطة hobaa تقديم بلاغ
بتاريخ: 21 يناير 200818 سنة كاتب الموضوع comment_121017 الاخ الكريمشكرا للرد انا عارف الكلام دهبس انا عايز اتحكم في جملة الwhereبمعن اني لما اقولهwhere :xممكن اضع مكان x اي قيمه او اي حقل اختار منههو ده ما اقصدهسلام تقديم بلاغ
بتاريخ: 21 يناير 200818 سنة comment_121023 اخي الكريم يمكن تجرب الكود التالي و ان شاء الله يكون هو المطلوب --The Code From Muhammad Yassein------------- ------------#21-Jan-2008#-------------------- declare ---Declare New Cursor With Parameter------------------ Cursor Emp_Cur (p_Empno number) is select * from emp where empno= p_Empno; --Declare New Cursor Varaiable V_Emp_cur Emp_cur%rowtype; begin open emp_cur(:empno); fetch emp_cur into v_emp_cur; close emp_cur; ------------------------------ :item9 := v_emp_cur.empno; :item10 := v_emp_cur.ename; :item11 := v_emp_cur.sal; :item12 := v_emp_cur.comm; :item13 := v_emp_cur.deptno; end; Dyn_cur.zip تقديم بلاغ
بتاريخ: 22 يناير 200818 سنة comment_121101 السلام عليكمفرضا ان لديك ثلاثة حقول :الاول اسمه Enameوالثاني اسمهSal والثالث الخاص بالبحث اسمهXxونريد ان يرجع من جدول الموظفين Empببيانات الاسم والمرتب بناء على رقم الموظف مثلا الموجود فى حقل Xx Declare Cursor mega is Select ename , sal from emp Where emp.empno = :xx ; Begin Open mega ; Fetch mega into :ename , :sal ; Close mega ; End ; الكود السابق كان يرجع بيان واحد فقط بناء على رقم الموظف الذى يتم البحث عنه ولكن اذا اردت البحث بأكثر من شرط واسترجاع الجدول كله مثلا فيمكن تطوير الكود بأكثر من شرط للبحث كالتالي : declare cursor mega is select ename , empno , sal , comm , hiredate , job , mgr , deptno from emp where ename like '%'||upper(:kk)||'%' or empno like '%'||upper(:kk)||'%' or sal like '%'||upper(:kk)||'%' or comm like '%'||upper(:kk)||'%' or hiredate like '%'||upper(:kk)||'%' or job like '%'||upper(:kk)||'%' or mgr like '%'||upper(:kk)||'%' or deptno like '%'||upper(:kk)||'%' ; begin open mega ; fetch mega into :ename,:empno,:sal,:comm,:hiredate,:job,:mgr,:deptno ; close mega; end; وهذا الكود ايضا لا يرجع سوى ببيان واحد فقط اما اذا اردت استرجاع اكثر من بيان فقم بأضافة Loopولا تنسي فى هذه الحالة ان تجعل الحقول المسترجع فيها البيانات عبارة عن جدول Tabularوشكراميجا تقديم بلاغ
بتاريخ: 22 يناير 200818 سنة comment_121113 اخى العزيز يوجد اكثر من طريقه يمكن عمل بها استعلام متغير و لاكن لكى تنجح فى ذالك لابد ان يكون لديك خبره جيده فى كتابة جمل الاستعلام ايهاب وجدى تقديم بلاغ
بتاريخ: 23 يناير 200818 سنة comment_121156 السلام عليكمدة كتاب بيشرح فية جميع جمل الديناميكواى استفسار نحن فى الخدمةنرجو الاستفادة للجميع Native_dynamic_SQL.doc تقديم بلاغ
بتاريخ: 23 يناير 200818 سنة كاتب الموضوع comment_121164 الاخ الكريم الف شكر علي المشاركهانا فعلا عايز اعمل ref cursorبس المشكله كل اما اجي اعمل جملهopen cursor_name for 'select * from employee'يعترض علي " ولو عملتها من غيرها تشتغلانا عايز اعملها بين " علشان اتحكم في conditions بتاعتيلو قدرت تجربها وتبعتلي قوليشكرا تقديم بلاغ
بتاريخ: 23 يناير 200818 سنة comment_121167 السلام عليكمهذا كتاب اخر لشرحة ديناميك كيرسورارجو الاستفادة للجميع xpp_C.ppt تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.