إنتقال للمحتوى

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

درس في الكيرسور ...


13 رد (ردود) على هذا الموضوع

#1 MuhammadYassein

MuhammadYassein

    عضو نشط

  • الأعضــاء
  • 304 مشاركة
  • الاسم الأول:Muhammad
  • اسم العائلة:Yassein
  • البـلـد: Country Flag
  • الاهتمامات:Oracle
    SOA
    BPM
    ADF
    Java
    Forms
    Reports
    Analysis
  • المنصب الحالي:Senior Oracle SOA BPM Specialist

تاريخ المشاركة 27 January 2008 - 06:22 PM

بسم الله الرحمن الرحيم




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

هل للكيرسور اصناف معينة .؟

نعم و يصنف الى صنفين رئيسين هما



Implicit Cursor



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




Explicit Cursor






و هو الكيرسور الذي يقوم المبرمج بأنشاءه بنفسه بشكل صريح .

ما هو الكيرسور ؟

بشكل بسيط جدا..
  • يمكن ان نقول ان الكيرسور هو خزان مؤقت للبيانات في ذاكرة الجهاز...
  • يمكن ان نقول ان الكيرسور هو جدول يحمل حجم كبير من البيانات يُحمل على الذاكرة
  • يمكن ان نقول ان الكيرسور هو متغير من نوع خاص للتعامل مع بيانات الجدول مرة واحدة

هل للكيرسور مكونات ؟

نعم الكيرسور باعتبارة كائن مثل اي كائن اخر في قاعدة البيانات له خصائص و مكونات و مجموعة من السمات .


كيف يتم التعامل مع الكيرسور .؟

اولا لابد من انشاء كائن يرث صفات الكيرسور و ذلك بتعريفه في منطقة الاعلان عن المتغيرات Declaration Section


Declare
Cursor Emp_Cur is select * from emp;

الان قمنا بأنشاء كيرسور جديد اسمة Emp_Cur مجهز لحمل بيانات جدول الموظفين Emp
انا بفضل ان اسم الكيرسور ينتهي ب _Cur للدلالة على ان هذا الكائن كيرسور او خزان بيانات
يمكن وضع اي شروط لجملة الاستعلام لبناء الكيرسور

الان لا بد من فتح هذا الكيرسور ... يعني ايه فتح الكيرسور يعني ... تحميل البيانات من قاعدة البيانات الى الخزان كأنك بترفع المياه من البئر لخزان المياة .
Begin Open Emp_Cur;
..
..
..



بعد هذة المرحلة لابد من الحصول على بيانات من هذه الخزان و نشرب من البيانات اللي احنا عاوزينها .........


Fetch   Emp_cur Into Emp_Rec;
...
...



خلي بالك لازم يكون فيه وعاء مناسب لاستيعاب البيانات من الخزان ... لذلك نعرف متغير مركب Composite Variable من نفس نوع خزان البيانات

Emp_Rec Emp_cur%RowType;

الان يمكن اغلاق الخزان لمنع تسرب المياة ........ و عدم التحميل الزائد على مصلحة المياة عفوا ....... الذاكرة .......

Close Emp_Cur;

يمكن الان التعامل مع البيانات الموجوده في Emp_Rec كأي متغير عادي جدا جدا جدا ........


v_Ename := Emp_rec.Ename ;
v_Empno := Emp_rec.Empno ;
V_sal := Emp_rec.Sal;



Example

declare
Cursor Emp_cur is select * from emp; Emp_rec Emp_cur%RowType;
begin open Emp_cur;
fetch Emp_cur into Emp_rec; dbms_output.put_line(Emp_rec.Ename || Emp_rec.Sal);
close Emp_cur;
end;



ايه يا عم ده ......... هو انا بعمل كل القصه ديه علشان اجيب مرتب الموظف و اسمة .......... ؟؟؟؟؟؟؟

لا طبعاُ...


انت ممكن تدخل الخزان في دورة مياة ........ عفوا..........دورة بيانات Loop
for I .. 1 .. 1000 loop
Fetch Emp_Cur into Emp_rec; v_Ename := Emp_rec.Ename;
V_Sal := Emp_rec.Sal;
Exit when Emp_cur%NotFound;
end loo;


iممكن أسأل حضرتك سؤال يا مستر محمد ياسين ...؟؟؟

تفضل...

هو مفيش حاجة اسهل من كده ؟؟؟

فيه طبعا .......

ممكن نلغي الخطوة بتاعت فتح الخزان ............

يا سلام ..........

اه طبعا ُ .....................

اقولك كمان ممكن نلغي كمان ......... تعريف متغير مركب Emp_rec .....

لاء ......... بجد ...............

أه ...طبعاُ .


و ممكن كمان نلغي مرحلة اغلاق الخزان ...........
و ممكن كمان نلغي مرحلة الحصول على البيانات Fetch Into ...........

معلش يا مستر ....... حاسس انك بتضحك عليٍ .......


شوف المثال ده و بطل قلة ادب ....

Exanmple
declare
Cursor Emp_cur is select * from emp; begin FOR i IN Emp_cur
loop
dbms_output.put_line(i.Ename ||' ' ||i.Sal);
end loop;
end;



و كده اختصرنا العملية


صدقتني يا عم ..........

كمان حاجة جميلة شوية ممكن كمان نلغي مرحلة الاعلان عن الكيرسور ................ بجد ..

begin FOR i IN (select * from emp) loop
dbms_output.put_line(i.Ename ||' ' ||i.Sal);
end loop;
end;



ماشي انا مصدقك .. بس انت قلت فيه سمات خاصة بالمؤشر .......

ايه السمات ديه ...؟

سواء كان الكيرسور Explicit او Implicit
له مجموعة سمات و هي


%IsOpen  --- to Check If Cursor Is Open or Not
%RowCount  to Determine Number or Record in Cursor
%Found   if Cursor Contain Data
%NotFound  to Determine if Cursor Not contain data

Example


begin delete  emp  where deptno=10;
dbms_output.put_line(SQL%rowCount || 'Row Deleted');
end;


هذا المثال لاظهار رسالة بعدد الصفوف التي تم حذفها ..
و هذا المثال يمثل الكيرسور من نوع Implicit لان قاعدة البيانات هي التي انشأت الكيرسور و ليس االمبرمج

يعني لو عملت اي جمل تتعامل مع الجداول في قاعدة البيانات سواء اضافة او حذف او تعديل سوف تقوم اوراكل بانشاء كيرسور للتعامل مع البيانات بشكل ضمني
و عمل الدوران السابق دون ان تشعر بأي ألم او صداع .........



كيف اتعامل مع الكيرسور من نوع Implicit ?؟

للتعامل معه نستخدم SQL%

SQL%RowCount
SQL%Found 
...
...

و لا ننسي ان الامثلة الاولى تمثل Explicit Cursor لاننا نحن الذين عرفنا الكيرسور ...........


اما المثال الاخير كمتا قلنا هو Implicit Cursor
'طبعا هناك المزيد في الكيرسور سوف اتحدث علية لاحقاُ ان شاء الله تعالى ...........

وعلى فكرة قبلا ما انسي بالنسبة احنا فقط تحدثنا عن الكيرسور الثابت بس ..............!!!!

يعني يا مستر فيه حاجة اسمها كيرسور متغير .....؟؟؟

ايوه .........

و فيه كمان طرق اضافة معاملات للكيرسور ..............

و ما هي المراحل التي يمر بها الكيرسور ... ؟.

قريبا ان شاء الله تعالى .............

ارجو للجميع الاستفادة .....

أسالكم الدعاء ........



  • olahaa و Mr_Askcode معجبون بهذا

اللهم اني احبك ... و احب من يحبك ... و احب كل عمل يقربني الى حبك ... اللهم أني أسألك رضاك و عفوك وجنة الفردوس

 
 
public void myInfo{

String myName    = "محمد ياسين" ;
String myCountry = "مصر ام الدنيا" ;
String MyGod     = "لا اله الا الله"; 
String myProphet = "محمد رسول الله";
String MyBook    ="القرآن العظيم";
String myGoal    ="جنة الفردوس";
boolean stillLife = true;


while(stillLife){
        System.out.println("لا اله الا الله محمد رسول الله");
}

}

 

979213111.jpg

 

 

Contact me now ..

 

 - Facebook - Linkedin - Youtube  - Twitter


#2 عبداللطيف

عبداللطيف

    مــشــرف عــام

  • الإشراف العام
  • 1,267 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 28 January 2008 - 04:13 AM

الف شكر اخي الكريم وننتظر المزيد ..... شرح موفق

#3 المبرمج الصاعد

المبرمج الصاعد

    مشرف عام

  • الفريق الإداري
  • 715 مشاركة
  • البـلـد: Country Flag
  • الاهتمامات:بكل جديد من التقنية..

تاريخ المشاركة 28 January 2008 - 08:05 AM

السلام عليكم؟؟؟

شكرا جزيل على نبسيط المعلومة بهدا اللأسلوب الرائع ؟
نتظر إكمال الموضوع؟

ولك مني جزيل الشكر والتقدبر!!!!

IT Manager


#4 Wise

Wise

    عضو نشط

  • الأعضــاء
  • 416 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 28 January 2008 - 09:00 AM

جزاك الله خيرا

يا ريت دروس اخرى من هذه النوعية

تم التعديل بواسطة Wise, 28 January 2008 - 09:01 AM.

اللهم اقسم لنا من خشيتك ما تحول به بيننا و بين معصيتك ..
ومن طاعتك ما تبلغنا به جنتك ..
و من اليقين ما تهون به علينا مصائب الدنيا..




مواضيعي

-----------

مشروع المخازن و فواتير مشتريات و مبيعات و حسابات عملاء و موردين
----------------------------------------------------------------------
تحليل مشروع المخازن و حسابات العملاء والموردين

#5 abu yousra

abu yousra

    مشترك

  • الأعضــاء
  • 54 مشاركة
  • الاسم الأول:mohamed
  • اسم العائلة:hashem
  • البـلـد: Country Flag
  • المنصب الحالي:it manager

تاريخ المشاركة 28 January 2008 - 03:02 PM

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

تم التعديل بواسطة abu yousra, 28 January 2008 - 03:03 PM.

محمد هاشم
mhsa2020@hotmail.com
أطلب قلبك عند ثلاث مواضع
عند قراءة القرآن وفي مجالس الذكر وعند خلوتك بينك وبين الله فإن لم تجده فاسأل الله أن يمنحك قلباً فأنه لا قلب لك

#6 nhamzehn

nhamzehn

    مشترك

  • الأعضــاء
  • 187 مشاركة
  • الاهتمامات:المطالعة

تاريخ المشاركة 02 February 2008 - 09:38 AM

جزاك الله خيراً
أسلوب حلو كثيييير وممتع وبإنتظار المزيد
سبحان الله وبحمده سبحان الله العظيم

اللهم لك الحمد والشكر كما ينبغي لجلال وجهك وعظيم سلطانك

#7 King Oracle

King Oracle

    مشرف قسم المشاريع

  • فريق الإشراف
  • 2,043 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 02 February 2008 - 11:23 AM

درس جميل جدا اخي محمد , بارك الله بك والى الامام دائما...


على فكرة اخي محمد بالنسبة للدروس التي وضعنها بالصوت والصورة (محاضرات )عند الدخول عليها الان تطلب ادخال كلمة السر واسم
المستخدم (بيانات الدخول على الايميل ) الرجاااء التكرم باصلاح الخلل .

[سبحان الله وبحمده ... سبحان الله العظيم]


م.علاء الدين الجبالي
Oracle APPS HCM Techno Functional Consultant


مدونتي الخاصة ... ( للتواصل معكم )
http://aljabali2010.blogspot.com/

التواصل عبر السكايبي

araboug.org
or
aladdin_aljabali

للتواصل عبر الايميل ( الماسنجر )

aladdin2011@live.com

موبايل 1: 00966540873048 ( حاليا في السعودية)
موبايل 2: 00962798522832


اللهم لا علم لنا إلا ما علمتنا إنك أنت العليم الحكيم


#8 ashrafgalal

ashrafgalal

    عضو

  • الأعضــاء
  • 6 مشاركة

تاريخ المشاركة 20 November 2008 - 06:20 PM

جزاك الله خيرااااااااااااااا
shokran ya Mr Mohamed bas hal fe video enta 3amlo
share7 lel cursor
????

#9 جود

جود

    مشترك

  • الأعضــاء
  • 55 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 27 February 2009 - 03:32 PM

thank u so much for nice explain

ياأمتي إني رضعت عروبتي منذ الصغر
فتأصلت في خاطري كاللّون في جوف الحجر


Oracle Certified Professional


صورة


#10 sameh bakkar

sameh bakkar

    مشرف قسم المبتدئين

  • فريق الإشراف
  • 1,019 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 27 February 2009 - 10:08 PM

تسلم يا محمد ... ننتظر منك المزيد

Sameh Bakkar

Principal Oracle Apps Techno-Functional Consultant / Oracle E-Business Suite Certified Trainer

Oracle E-Business R11 Suite Applications Workflow Certified Expert

Oracle E-Business Suite R12 HCM Certified Implementation Specialist

Oracle Certified Professional

ITIL V3 Foundation certified

Microsoft Project certified




الموقع الخاص: AppsLead | Your Honest Guide | Sameh Bakkar


#11 tnzeel

tnzeel

    عضو نشط

  • الأعضــاء
  • 251 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 11 June 2014 - 10:42 AM

شكرا اخى زادك الله علما الشرح بطريقة مبسطه ومفهومه سلمت يداك



#12 anas.soft

anas.soft

    عضو مميز

  • الأعضــاء
  • 583 مشاركة
  • الاسم الأول:Anas
  • اسم العائلة:Radman
  • البـلـد: Country Flag
  • الاهتمامات:ORACLE & PHP
  • المنصب الحالي:IT Manager & Oracle Developer

تاريخ المشاركة 16 June 2014 - 02:18 PM

جزاك الله خير جزا وجعلة في ميزان حسناتك



#13 a2009mah

a2009mah

    مشترك

  • الأعضــاء
  • 57 مشاركة
  • الاسم الأول:احمد
  • اسم العائلة:علي
  • البـلـد: Country Flag
  • المنصب الحالي:oracle dev

تاريخ المشاركة 03 August 2014 - 09:17 AM

يسلمو على الشرح الجميل ....استمر



#14 predator jaw

predator jaw

    عضو نشط

  • الأعضــاء
  • 253 مشاركة
  • الاسم الأول:Ramy
  • اسم العائلة:Omar
  • البـلـد: Country Flag

تاريخ المشاركة 03 September 2014 - 10:54 AM

جزاك الله خيراً

 

ممكن توضيح لو سمحت ref cursor