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

 

المنتديات

 

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

 

قسم التصاميم

 

راسلنا

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

 

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

 

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

 سلسله دروس PL/SQL:الدرس الخامس

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

شاهدنا في الدروس الماضية ان اي اجراء نقوم بكتابة اني اذا اردت استخدامة اكثر من مرة فاني اقوم بكتابة كل مرة في sql * plus لكي احصل على النتائج لكن ماهو رأيك لو نقوم بتخزين هذا الاجراء في قاعدة البيانات ونعطية اسم وحينما نحتاجه نستدعية باسمه وهذا يوفر علينا الشيء الكثير لذلك درسنا هذا اليوم هو الاجرائيات المخزنة.

ولكي نقوم بانشاء اجراء مخزن نقوم بمايلي :

CREATE [OR REPLACE] PROCEDURE procedure_name(متغيرات الادخال الممررة ومتغيرات الاخراج)

حيث تمثل procedure_name  اسم الاجراء المستخدم.

اما OR REPLACE فهي توضع حينما تعلم ان الاجراء موجود من السابق.

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

student_id  in number(9)

لاحظ اسم المتغير هو student_id  ثم بعده وضعنا الكلمة in  ومعنى ان هذا المتغير يعتبر كمدخل

اما لتعريف متغير يعود بقيمة من الاجراء مثلا لو اردنا تعرف متغبر يرجع بمعدل الطالب يتم التعريف كمايلي :

ave out number(5,2)

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

مع العلم انه يمكن تعريف متغير للمدخلات والمخرجات حيث تمرر به القيمه اولا وبعد تنفيذ الاجراء يتم وضع القيمه في نفس المتغير وتتم كمايلي :

ave in out number(5,2)

 ومعنى هذا اي مدخل ومخرج في نفس الوقت .

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

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

POINT MARK COURSE_CODE NO_STU
13.5 88 216CS 111
10.5 75 225CS 222
3 40 225CS 333
14.25 90 225CS 111
10.5 78 216CS 222
13.5 85 216CS 333

لو اردنا تصميم اجراء مخزن لكي يقوم بطباعة درجة الطالب بعد تمرير رقم الطالب ورقم المقرر.

الاجراء المخزن  سوف يكون كمايلي :

create or replace procedure stu_mark(
stu_id in studys.NO_STU%type,
cou in studys.COURSE_CODE%type)
as
mar studys.mark%type;
begin
select mark
into mar
from studys
where NO_STU=stu_id
and COURSE_CODE=cou;
DBMS_OUTPUT.PUT_LINE(mar);
end;
/

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

begin
stu_mark(111,'216CS');
end;
/

لاحظ كيف تم استدعاء الاجراء السابق من خلال اسم الاجراء وبذلك سوف يكون الناتج على الشاشة كمايلي 88   وهي صحيحة بعد تمرير رقم الطالب 111 ومقرر 216CS 

لكن لاحظ اننا لم نستخدم متغيرات اخراج لكن مأرايك ان  نصمم اجراء اخر يقوم بنفس الوظيفة التي يقوم بها  الاجراء السابق لكن عملية الطباعة تكون بعد الاستدعاء لكي نجعل الاجراء يقوم بارجاع درجة الطالب بمتغير  لذلك فان الاجراء كمايلي :

create or replace procedure stu_mark22(
stu_id in studys.NO_STU%type,
cou in studys.COURSE_CODE%type,
mara out studys.mark%type)
as
begin
select mark
into mara
from studys
where NO_STU=stu_id
and COURSE_CODE=cou;
end;
/

بعد ذلك نقوم باستدعاء الاجراء ومن ثم طباعة الدرجة لان لو لاحظت الاجراء لايقوم بالطباعة ولاحظ ايضا ان الدرجة تم وضعها في المتغير mara  ولذلك سوف يعود بهذه القيمة وسوف يكون الاستدعاء كمايلي :

declare
m studys.mark%type;
begin
stu_mark1(111,'225CS',m);
DBMS_OUTPUT.PUT_Line(m);
end;
/

وسوف يكون الناتج هو 90 وهذا صحيح بناء على الجدول.

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

شكرا لكم اتمنى لكم التوفيق , في الدرس القادم سوف ناخذ مثال شامل على الاجرائيات المخزنه مثل نبدأ بالدوال(الوظائف) functiom .

مع تحيات اخوكم المخلص / حــــــمد ,,,,,,,,,,,,,,,,,,,الفريق العربي للبرمجة

 

 

 

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

 

     

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

2003

شبكة بكسل

www.pxll.com