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

Dynamic Query

Featured Replies

بتاريخ:

الاخوة الكرام
انا عايز اعمل dynamic query
انا باعملها لما ترجع سجل فقط
بس انا عايز اعملها ترجع اكتر من سجل
زي الcursor كده
واخد البيانات اللي جايه منها واتعامل معاها
ارجو الافاده
شكرا

بتاريخ:

بص ياباشا
ال 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; انهاء المؤشر بالكامل




ايهاب وجدى

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

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

الاخ الكريم
شكرا للرد انا عارف الكلام ده
بس انا عايز اتحكم في جملة الwhere
بمعن اني لما اقوله
where :x
ممكن اضع مكان x اي قيمه او اي حقل اختار منه
هو ده ما اقصده
سلام

بتاريخ:

اخي الكريم يمكن تجرب الكود التالي و ان شاء الله يكون هو المطلوب

--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

بتاريخ:

السلام عليكم
فرضا ان لديك ثلاثة حقول :
الاول اسمه
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
وشكرا
ميجا

بتاريخ:

اخى العزيز

يوجد اكثر من طريقه يمكن عمل بها استعلام متغير و لاكن لكى تنجح فى ذالك لابد ان يكون لديك خبره جيده فى كتابة جمل الاستعلام

ايهاب وجدى

بتاريخ:

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

Native_dynamic_SQL.doc

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

الاخ الكريم الف شكر علي المشاركه
انا فعلا عايز اعمل ref cursor
بس المشكله كل اما اجي اعمل جمله
open cursor_name for 'select * from employee'
يعترض علي " ولو عملتها من غيرها تشتغل
انا عايز اعملها بين " علشان اتحكم في conditions بتاعتي
لو قدرت تجربها وتبعتلي قولي
شكرا

بتاريخ:

السلام عليكم
هذا كتاب اخر لشرحة ديناميك كيرسور
ارجو الاستفادة للجميع

xpp_C.ppt

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

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

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

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

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

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.