الانتقال إلى المحتوى
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

بتاريخ:

الســــــــــــلام عليكم جميعا
قبل ان ابدا في السؤال اشكركم على المستوى الرائع
السؤال هو:
عند عملية جلب البيانات بcursor لانستطيع معالجة البيانات
هل هناك طريقة تستطيع من خلالها بحث عن سجل او اكثر واجراء معالجة البيانات
وشكرا

بتاريخ:

توضيح اكثر ،،

حتى نعرف مالمشكلة!!

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

التوضيح كالتالي يااخ بوصالح
لنفرض اني بحث عن الموظفين الموجودين في الادارة رقم 10 في جدول emp
باستخدام الcursor
اذا اردت ان اعدل اي سجل تظهر رسالة خطأ
فهل يوجد هناك طريقة اخرى ابحث بها عن الموظفين واستطيع ان اعدل
في السجلات الناتجة من عملية البحثارجو ان يكون الشرح واضح وشـــــــــــــــــــكرا.

بتاريخ:

ممكن تكتب الرساله او رقمها ؟

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

السلام عليـــــــــــــــــــــــــــــكم .......................
التوضيح كاتالي يا اخ HOBAA
أن الأن غير موجود على جهازي
ولاكن محتوى الرسالة هوUNABLE UPDATE THE RECORD
واعتقد ان ورقم الرسالةFRM-40559
ولاكن كما قلت اني اعتقد ان هذا هو رقم الرسالة.

------------------------------------------------------------
اني اعتقد ان سؤالي غامض قليل او غير مساغ بصيغة صحيحة ولكي اؤكد على المطلوب
وهو التالي :
لنفرض اني بحث عن اي سجل في جدول EMP باستخدام CURSOR واريد ان اغير
اسم الموظف يحدث خطأ يمنع عملية التعديل .
هل يوجد حل لهذه المشكلة او طريقة اخر للبحث عن سجل في الجدول مع امكانية التعديل
ارجو ان يكون كلامي واضح وشكــــــــــــــــــرا لاهتمامكم بالموظوع.
انا متأكد بأنك ستجيب على سؤالي لانك أهل للثقة

تم تعديل بواسطة sky information

بتاريخ:

هذا كيرسر يعرض بالفورم رقم الموظف واسمه وراتبه الشهري ولنفرض ان البلوك عندك الموجود بالفورم لايتبع لقاعدة بيانات nondatabase ممكن ان تضع الكود داخل تريجر
when-new-forms-instance

declare
cursor c is
select emp_no,emp_name,salary from employees;

begin
firs_record;
for i in c loop
  :empno:=i.emp_no;
  :empname:=i.emp_name;
  :sal:=i.salary;
  next_record;
exit when c%notfound;
end loop;



الloop يعمل update للموظف الذي تم عرضه ويتغير حسب تغييرك بالشاشة
ممكن ان تضع الكود داخل كبسة

begin
first_record;
   loop
   update employee set emp_name=:emp where emp_no=:empno;
  next_record;
  exit when :system.last_record='TRUE';
 end loop;
commit_form;
   end;

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

مشكور يا اخ اسامة ...................................
رايح اجرب الكود واخبرك بالنتيجة
والله يعطيك العافية انت والشباب على المستوى الرائــــــــــــــــــــــــــــــــــع
وشكرا.

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

لنفرض ان جدول emp فيه (الفين موظف) اريد ان ابحث عن موظف اسمه naser .
واريد تعديل سجله او حذفه ولكي اقوم بذلك استدخدمت cursor
وعرض لي السجل في form ......... الى الان ماشي صح ولكن حينما اريد تعديل سجله او حذفه

تخرج الرسالة frm-40508 oracle error:unable to insert record
واذا استخدمت الامر execute_query لكي اصل للسجل المطلوب استطيع احذفه واعدله ولكن
ليس من المنطق ان استخدم الامر execute_query وابحث عن السجل للعديد من الدقائق
فهل هناك طريقة يا ايه المبدعون استطيع ان ابحث عن سجل من بين الاف السجلات واستطيع اعدل واحذف من
دون مشــــــــــــــــــــــــــاكل وامــــل اني لم ازعجكم على كثرة الاسئلة وشكرا.

بتاريخ:

بس ياخى على مقدار فهمى من شرحك
انت عوز تبحث عن موظف وتقوم بعمل تعديل او حذف لهذا الموظف .
فى البدايه الحياه بتمشى وحده وحده يعنى لازم نعمل كل حاجه لوحده
لعمل بحث ممكن تعمل زر به

enter_query;


وهذا الزر يعد لاستقبال استعلام(بحث)
الزر الاخر

execute_query;


هذا الامر ينفذ الاستعلام بنأن على اى بيان يتم كتابته
على سبيل المثال على جدول emp
لم اكتب سوا اسم الموظف "scott" وهنا سوف يبحث بين الموظفيين على الموظف الذى يدعا "scott" وبعد ذلك يمكن عمل الحذف او التعديل و كل من العمليتيين فى زر مستقل .
و فى طريقه اخرى للبحث بأستخدام ال cursor و هى كما ذكرها الاخ العزيز اسامة ولكن مع اضافة شرط ويكون الكود هكذا

declare
cursor c is
select emp_no,emp_name,salary from employees
where ename like'%'||:ename||'%';
begin
firs_record;
for i in c loop
 :empno:=i.emp_no;
 :empname:=i.emp_name;
 :sal:=i.salary;
 next_record;
exit when c%notfound;
end loop;


واذا كنت تريد دقه اكثر ممكن تزيد الشروط .

انا مش عارف اذا كنت فهمت صح او غلط ملحوظه

ايهاب وجدى

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

شكــــــــــــــــــــــــــــــــــــرا .........................................
الاخ hobba وسوف اجرب الكود واعطيك الرد

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

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

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

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

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

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.