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

 

المنتديات

 

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

 

قسم التصاميم

 

راسلنا

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

 

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

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

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

درسا في الدرس الثاني المؤشرات الصريحة والان سوف نكمل شرح ذلك

لاحظنا في المثال السابق (اخر مثال في الدرس الثاني) ان الاستعلام في cursor سوف يعود بسجل واحد لكن ماذا يحدث لو اعاد المؤشر اكثر من سجل واردنا المرور على كافة السجلات ؟

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

mycur%found

حيث :

mycur : هي اسم المؤشر.

%  : توضح انا مايلي اسم المؤشر هي احد خصائصه.

found : خاصية التي من خلالها نعرف هل تم الانتهاء من جميع السجلات ام لا

مثال :

النتيجة الدرجة كود المقرر اسم الطالب
RESULT MARK SUBJECT NO_STU
  88 216CS 111
  75 225CS 222
  40 225CS 333

نريد انشاء اجراء يقوم بالمرور على الجدول وينظر الى درجة الطالب اذا كان ناجح في المقرر ام لا فاذا كان mark اكبر او يساوي 50 ضع قيمة true في حقل result والا ضع قيمة false في حقل result

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

create table stu_study(
NO_STU number(4),
SUBJECT varchar2(8),
MARK number(3),
RESULT varchar2(20));

وبعد انشاء الجدول نقوم بادخال المدخلات السابقة

insert into stu_study (NO_STU,SUBJECT,MARK) values (111,'216CS',88);

insert into stu_study (NO_STU,SUBJECT,MARK) values (222,'225CS',75);

insert into stu_study (NO_STU,SUBJECT,MARK) values (333,'225CS',40);

بعد ذلك نقوم بانشاء الاجراء:

declare
mar number(3);
no number(3);
cursor res_stu is
select no_stu,mark
from stu_study;
begin
open res_stu;
loop
fetch res_stu into no,mar;
exit when res_stu%notfound;
if mar>=50 then
update stu_study set result='TRUE' where no_stu=no;
else
update stu_study set result='FALSE' where no_stu=no;
end if;
end loop;
close res_stu;
end;
/

وبهذا تكون النتائج في الجدول  كمايلي :

RESULT MARK SUBJECT NO_STU
TRUE 88 216CS 111
TRUE 75 225CS 222
FALSE 40 225CS 333

هل رأيتم سهوله ذلك والفائد الكبيرة من المؤشرات.

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

هناك طريقة اخرى لتعريف المتغيرات لاحظ في الجدول السابق ان الحقل no_Stu تم تعريفه على انه من نوع  number  وتم تعريف المتغير no في الاجراء على انه number  ايضا لكي يتم وضع رقم الطالب فيه لكن لاحظ لو تم تغير نوع الحقل في الجدول من number الى varchar2 فانه يجب عليك تغير نوع المتغير no في الاجراء ايضا لكن هناك طريقه تجعلك لاتعدل الاجراء كل مرة وهي استخدام الامر التالي لتعريف المتغير no  في الاجراء

NO  stu_study.no_stu%type

حيث :

NO هي اسم المتغير

stu_study : اسم الجدول

no_stu : الحقل المطلوب في الجدول

%type : خاصية نوع الحقل

ومعنى ماسبق قم بتعريف متغير اسمه no له نفس نوعية الحقل الذي اسمه NO_STU الموجود في الجدول stu_study .

وبهذا لان تقوم بتغير نوع العنصر في الاجراء في كل مرة تغير النوع وهكذا مع جميع المتغيرات التي لها صله بالجداول

وبذلك يصبح الاجراء بعد التعديل كمايلي:

declare
mar
stu_study.mark%type;
no
stu_study.no_stu%type;
cursor res_stu is
select no_stu,mark
from stu_study;
begin
open res_stu;
loop
fetch res_stu into no,mar;
exit when res_stu%notfound;
if mar>=50 then
update stu_study set result='TRUE' where no_stu=no;
else
update stu_study set result='FALSE' where no_stu=no;
end if;
end loop;
close res_stu;
end;
/

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

وبهذا نكون انهينا المؤشرات الصريحه

والدرس القادم سوف يكون على المؤشرات الضمنية  و الجداول  مع  مجموعة امثله

---------

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

اخوكم/ حمد المهندس

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

 

 

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

 

     

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

2003

شبكة بكسل

www.pxll.com