الصفحة الرئيسية

 

المنتديات

 

الدروس التعليمية

 

قسم التصاميم

 

راسلنا

دليل المواقع صندوق الألوان خدماتنا مكتبة الصوتيات مكتبة الخطاط
سجل الزوار صفحة الفريق مكتبة الجافا مكتبة الأدوات مجلة الموقع

 

   
 
دروس الفوتشوب

 سلسله دروس PL/SQL:الدرس الثاني

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

اول شي مبروك علينا وعليكم الشهر واللهم اعنا على صيامه وقيامه.

 

اتمنى انكم فهمت الدرس الاول وطبقتوا ذلك جيدا

 

الدرس الثاني:

تابع لاوامر اللغة

ب- الـــتكرار :

ويوجد عدة اوامر للتكرار وهي:

* loop-exit-end

وهنا لابد من وضع شرط لأنهاء الحلقة

نأخذ مثال بسيط على ذلك

Declare

i   number(5);

BEGIN

i:=1;

LOOP

IF i>10 then

EXIT;

END IF;

DBMS_OUTPUT.PUT_LINE('i =' || i);

i:=i+1;

End loop;

END;

/

 

شرح الكود السابق

السطر الثاني : تعريف متغير من نوع  رقم

السطر الثالث :البداية

السطر الرابع : اعطاء المتغير قيمة ابتدائية وهي i=1

السطر الخامس : شرط الانهاء

السطر السادس : الانهاء اذا كان i>10 ولا يكمل

السطر السابع :انها if

السطر الثامن : طباعة i

السطر التاسع :زيادة قيمة i بواحد

السطر العاشر : نهاية الحلقة

وبعد كتبابة هذا الكود يكون الناتج كمايلي:

i =1
i =2
i =3
i =4
i =5
i =6
i =7
i =8
i =9
i =10

------------------------------------------------------------------------------

** LOOP-   EXIT WHEN -   END

Declare

i   number(5);

BEGIN

i:=1;

LOOP

EXIT WHEN i>10;

DBMS_OUTPUT.PUT_LINE('i =' || i);

i:=i+1;

End loop;

END;

/

ويكون الناتج نفس السابق لكن لاحظ استخدم شرط الانهاء

EXIT WHEN i>10;

------------------------------------------------------------------------------

*** WHILE  - LOOP -  END

Declare

i   number(5);

BEGIN

i:=1;

WHILE i <= 10 LOOP

DBMS_OUTPUT.PUT_LINE('i =' || i);

i:=i+1;

End loop;

END;

/

ويكون الناتج نفس المثال السابق

------------------------------------------------------------------------------

**** FOR - IN - LOOP - END  :

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

والصيغة العامه لها هي على الاتي

LOOP  النهاية.. البداية  FOR   i  IN 

الجمل المراد تكرارها

END LOOP

مثــــــــــــــــــــال:

Declare

i   number(5);

BEGIN

FOR  i   IN  1..10 LOOP

DBMS_OUTPUT.PUT_LINE('i =' || i);

End loop;

END;

/

وسوف يكون الناتج كمايلي(نفس السابق):

i =1
i =2
i =3
i =4
i =5
i =6
i =7
i =8
i =9
i =10

 

------------------------------------------------------------------------------------

ج/ المؤشرات CURSORS

هذا الدرس من اهم المواضيع في pl/sql

تستخدم pl/sql المؤشرات cursors لأدارة عبارات التحديد select في لغة sql وكما لاحظنا الاوامر السابقة مثل if والتكرار لم نستخدمها مع بيانات الجداول المخزنه ولعمل ذلك لابد من استخدام هذه المؤشرات.

وهناك نوعين من المؤشرات  هي الضمنية والصريحة وسوف نتطرق لك واحد بالتفصيل والامثلة اللازمة.

أ- المؤشرات الصريحه :

يتم تعريف هذا النوع من المؤشرات كجزء من الاعلان declare ويجب ان تشتمل عبارة sql المعرفه على عبارة التحديد select فقط حيث لايمكن استخدام الكلمات الاساسية insert,update,delete

وعند استخدام المؤشرات الصريحه دائما ماستكتب اربعة مكونات كمايلي:

1- يتم تعريف المؤشر في الجزء declare

2- يتم فتح المؤشر بعد عبارة begin

 

الصيغة العامة لتعريف المؤشر الصريح كمايلي:

DECLARE

     IS   اسم المؤشر  CURSOR

الاستعلام

تقوم باستبدال اسم المؤشر باسم مؤشر حقيقي

وتقوم بوضع جملة الاستعلام select في مكان الاستعلام

 

ولكي تقوم بفتح هذا المؤشر وتستخدمه نقوم بفتحه باستخدام الامر open كمايلي:

اسم المؤشر  OPEN

وبعد فتح المؤشر تقوم باسترجاع او تحميل البيانات سطر(سجل) واحد من المؤشر الذي تم تعريفه باستخدام الامر FETCH كمايلي:

.......,متغير2,متغير1 INTO  اسم المؤشر FETCH

ومعنى هذا اي قم باسترجاع البيانات من المؤشر المعطى اسمه وحملها into الى المتغيرات كع ملاحظة ان عدد المتغيرات يساوي عدد الحقول الموجودة في استعلام المؤشر.

وبعد الانتهاء من اجراء العمليات على المؤشر يجب عليك اغلاقه ويتم اغلاقه كمايلي:

close cursor_name

 

 

مثال على طريقة تعريف مؤشر :

افرض انه لدينا هذا الجدول

age name no
23 mohammed

111

22 talal 222
24 majed 333

اولا قم بانشاء هذا الجدول كمايلي:

create table stud(
no number(4),
name varchar2(40),
age number(2));

ثانيا قم بادخال البيانات السابقة في هذا الجدول كمايلي:

insert into stud values(111,'mohammed',23);

insert into stud values(222,'talal',22);

insert into stud values(333,'majed',24);

 

ثم قم بنتفيذ مايلي

set serveroutput on;

DECLARE

name_stu varchar2(40);

CURSOR  name_student IS

select name from stud

where no=111;

BEGIN

OPEN name_student;

FETCH name_student INTO name_stu;

DBMS_OUTPUT.PUT_LINE(name_stu);

CLOSE name_student;

END;

/

بعد  التنفيذ  سوف يظهر لك الناتج كمايلي:

mohammed

وهذا الشي صحيح

لاحظ اننا اتبعنا نفس الخطوات التي ذكرناه لكي نتعامل مع مؤشر صريح

--------------------------------------------------

صراحه تعبت لذلك نكمل الدرس القادم

-----------------------------------------------------------------------

 

 

اعتذر عن طول الدرس

وانشاء الله في الدرس القادم سوف نأخذ المزيد من الامثله على المؤشرات الصريحه وطريقة التعامل معه بطرق عديدة

وسوف نبدأ بالمؤشرات الضمنيه وهي اسهل من المؤشرات الصريحه

ارجو دراسة هذا الدرس وتطبيقه لكي يسهل عليك الدرس القادم

-------

اخوكم المخلص

حمد المهندس

منتديات الفريق العربي للبرمجة

----------------------------------------

دروس الجافا
دروس السويش دورة الأوركال
دروس لغة ال php برمجة ال C و ++C
دروس لغة ال ASP دروس اللنكس
دروس الأكسس قواعد البيانات mysql / sql
دروس ال MCSE دروس ال html
دروس الفلاش دروس الفرونت بيج
دروس الفيجوال بيسك دروس وندوز اكس بي
دروس برمجة الدلفي    
     
 

 

     

All Rights Reserved     ©     جميع الحقوق محفوظة

2003

شبكة بكسل

www.pxll.com