بتاريخ: 19 فبراير 200719 سنة comment_92202 السلام عليكم ..في مشيبه و بدي تتكرموا علي بحل لها ..اليكم المشكله مع مثال مبسطفرضا انا عندي الجدول التالي mjma و به الحقول x , m كما هو موضح بالصورة المرفقه ..المطلوب هو كألآتي ..بدي اعمل cursor بحيث يقوم بتعديل ال حقل الX من 0 الى 1 و لكن بعدد معينيعني فرضا انطلب مني انو أعدل فقط records 2يعني عملت فورم فيه text item اسمها qty و زر واحد عند ادخال قيمه 2 داخل ال qty بدي اياه يروح عالجدول و يعدل اول 2 records لهم قيمة x = 0 كيف بدي أعملها ؟؟؟كتبت هدا الكود بس المشكله انو بيعدللي كل الـ records الل لهم قيمه x =0دمتم بخيرعفوا هاي الصورة الموضحه لشكل الجدول تقديم بلاغ
بتاريخ: 19 فبراير 200719 سنة comment_92206 SQL> select * from temp where rownum<=2 and y=0; X Y --------- --------- 1 0 3 0 تقديم بلاغ
بتاريخ: 21 فبراير 200719 سنة كاتب الموضوع comment_92390 السلام عليكم شمرا أخي على اجابتك .. لكني لم أفهم المطلوبعلى أي حال هاي الكود اللي انا كتبته داخل زر الادخالDECLARE CURSOR setx IS SELECT M FROM MJMA WHERE X = 0 ; BEGINFOR setx_cur IN setx LOOP If :parameter.ata < :QTY Then Message(setx_cur.m||' ' || :parameter.ata);Update mjma set x = 1 where mjma.x = 0;Commit ;else null; end if ;:parameter.ata := :parameter.ata+1 ;END LOOP;close setx;END;المشكله انو بروح عالجدول و بعدل كل القيم من 0 ال 1 جميعها و ليس بعدد ما انا بدي تقديم بلاغ
بتاريخ: 21 فبراير 200719 سنة comment_92394 where rownum<=2 هذا يحدد لك أول ريكوردينغير الرقم وستلاحظ عدد الريكوردات الراجعة تقديم بلاغ
بتاريخ: 24 فبراير 200719 سنة comment_92590 قم بإضافة هذا الشرط في ال updateUpdate mjma set x = 1 where mjma.x = 0 and mjma.m=setx_cur.m تقديم بلاغ
بتاريخ: 24 فبراير 200719 سنة comment_92623 أنا بصراحه مفهمتش أوى الكود إللى إنت كاتبه لكن ممكن تعمل زى عداد فى اللوب بتاع ال cursordeclare cnt number(2);beginfor c in (select Y from temp where y=0)loopif cnt <2 thenupdate temp set x=1 where y=c.y;end if;cnt:=cnt+1;end loop;end; وممكن بطريقه ال row numلكن مشكله ال row num إنه بيترتب على حسب ال primary key بتاع الجدول وأنا معرفش الجدول ده بتاعه إيه تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.