الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

مشكلة في ال_ Cursor

Featured Replies

بتاريخ:

السلام عليكم ..
في مشيبه و بدي تتكرموا علي بحل لها ..
اليكم المشكله مع مثال مبسط
فرضا انا عندي الجدول التالي mjma و به الحقول x , m كما هو موضح بالصورة المرفقه ..
المطلوب هو كألآتي ..
بدي اعمل cursor بحيث يقوم بتعديل ال حقل الX من 0 الى 1 و لكن بعدد معين
يعني فرضا انطلب مني انو أعدل فقط records 2
يعني عملت فورم فيه text item اسمها qty و زر واحد عند ادخال قيمه 2 داخل ال qty بدي اياه يروح عالجدول و يعدل اول 2 records لهم قيمة x = 0
كيف بدي أعملها ؟؟؟كتبت هدا الكود بس المشكله انو بيعدللي كل الـ records الل لهم قيمه x =0

دمتم بخير

post-22640-1171895163.jpgعفوا هاي الصورة الموضحه لشكل الجدول

بتاريخ:

SQL> select * from temp where rownum<=2 and y=0;

	X		 Y
--------- ---------
	1		 0
	3		 0

بتاريخ:
  • كاتب الموضوع

السلام عليكم
شمرا أخي على اجابتك .. لكني لم أفهم المطلوب
على أي حال هاي الكود اللي انا كتبته داخل زر الادخال
DECLARE

CURSOR setx IS
SELECT M FROM MJMA WHERE X = 0 ;


BEGIN
FOR 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 جميعها و ليس بعدد ما انا بدي

بتاريخ:

where rownum<=2



هذا يحدد لك أول ريكوردين

غير الرقم وستلاحظ عدد الريكوردات الراجعة

بتاريخ:

قم بإضافة هذا الشرط في ال update

Update mjma set x = 1 where mjma.x = 0 and mjma.m=setx_cur.m

بتاريخ:

أنا بصراحه مفهمتش أوى الكود إللى إنت كاتبه لكن ممكن تعمل زى عداد فى اللوب بتاع ال cursor
declare
cnt number(2);
begin
for c in (select Y from temp where y=0)
loop
if cnt <2 then
update temp set x=1 where y=c.y;
end if;
cnt:=cnt+1;
end loop;
end;
وممكن بطريقه ال row num
لكن مشكله ال row num إنه بيترتب على حسب ال primary key بتاع الجدول وأنا معرفش الجدول ده بتاعه إيه

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.