صفوف

صفوف » صفوف لغات البرمجة » قواعد البيانات »  الدرس السابع

 الدرس السابع


 الدرس السابع  أضيف في: 11/08/2009

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



تعلمنا سابق كيفية انشاء الاجراءت والوظائف المخزنة. لكن مارأيك لو وجد لدينا قاعدة بيانات كبيرة جدا ولنضرب مثال انها تحتوي على 50 اجراء او وظيفة وظيفة او اجراء لها عمل خاص ولنفرض ان هذه القاعدة هي لمحل تجاري ضخم يحتوي على بيانات العملاء وبيانات الموظفين وبيانات الاصناف التجارية وبيانات المخزون وغيرها من بيانات , ولذلك فان بعض هذه الاجرائيات والوظائف المخزنة مختص بالعملاء مثلا وجود اجراء لحساب اجمالي عميل وغيرها من الاجرائيات , ومثل وجود اجرئيات خاصة بالموظفين مثلا اجرائية خاصة بحساب راتب الموظف بعد حذف الحسومات واضافة العلاوات وغيرها ايضا , لكن وضعها في هذا الشكل في قاعدة البيانات قد يسسب لك بعض الارباك لذلك مارأيك بان تجمع كل الوظائف والاجرائيات الخاصة بكل قسم في مجموعة لوحدها وهذه المجموعة تدعي الحزمه package مثلا نجمع كل اجرائيات والوظائف الخاصة بالعملاء في حزمة خاصة



فوائد استخدام الحزمة :



1- تجميع وحدات pl/sql المرتبطة.
2- اداء افضل.
3- تكون السرية افضل.
4- اهم شيء هو في عملية الصيانه حيث تسهل عملية الصيانة باستخدامم الحزم.



مكونات الحزم :



تتكون الحزمة من جزءين الاول وهو الوصف specification ويحتوي على التعاريف مثل متغيرات او مؤشرات او اسماء الاجراءت ومتحولتها.
اما الجز الثاني فهو جسم الحزمة ويحتوي على تفاصيل الاجراءت والعمليات وغيرها
والصيغة العامة لانشاء الجزء الاول كمايلي :



CREATE OR REPLACE PACKAGE pack_name AS
.........
.........
.........
end;



والصيغة العامة لانشاء الجزء الثاني كمايلي :



CREATE OR REPLACE PACKAGE BODY pack_name AS
.........
جسم الحزمة
.........
end;



لكن يجب ان يكون اسم الحزمة في الجزء الاول هو نفس اسم الحزمة في الجزء الثاني.



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



لنقم بانشاء حزمة تحتوي على وظيفة لحساب معدل طالب واجراء لطباعة المعدل
ولذلك سوف نستخدم نفس الوظيفة التي انشناها في الدرس السادس والتي اسمها stu_avea والتي تقوم بحساب معدل الطالب والان نبداء بانشاء الحزمة . الجزء الاول من الحزمة specification كمايلي :



CREATE OR REPLACE PACKAGE student AS
function
stu_avea(stnum in studys.NO_STU%type)return real;
procedure print_ave(avrage in real);
end;



الان نقوم بانشاء جسم الحزمة والتي تحتوي على التفاصيل.كمايلي



CREATE OR REPLACE PACKAGE BODY student AS
function stu_avea(stnum in studys.NO_STU%type)
return real
as
hour courses.hours%type;
avrage number(4,2);
sum_hours courses.hours%type:=0;
point studys.POINT%type;
total_Point studys.POINT%type:=0;
codem courses.CODE%type;
cursor sumpoint
is
select COURSE_CODE,POINT
from studys
where NO_STU=stnum;
begin
open sumpoint;
loop
fetch sumpoint into codem,point;
exit when sumpoint%notfound;
select hours
into hour
from courses
where code=codem;
total_Point:=total_Point+point;
sum_hours:=sum_hours+hour;
end loop;
close sumpoint;
avrage:=total_Point/sum_hours;
return avrage;
end;

procedure print_ave(avrage in real)
as
begin
DBMS_OUTPUT.PUT_LINE(avrage);
end;
end;



ويحتوي جسم الحزمة كمانلاحظ على مكونات الوظيفة والاجراء الذي تم تعريفهما في وصف الحزمة حيث ان الوظيفة لحساب المعدل والاجراء لطباعة المعدل.



*** طريقة استدعاء اجراء او وظيفة موجود داخل حزمة :



تتم عملية الاستدعاء كمايلي : pack_name.func_proc_name



اي اسم الحزمة اولا ثم نقطة ثم اسم الاجراء او الوظيفة مـــــــثال :



set serveroutput on
declare
aa real;
begin
aa:=student.stu_avea(111);
student.print_ave(aa);
end;
/



وبعد التفيذ يكون الناتج هو معدل الطالب الذي رقمه 111 لاحظ اول شي استدعينا داله حساب المعدل ووضعناها في المتغير aa ثم استدعينا اجراء الطباعة ليتم طبعة على الشاشة.



والان و بعد ان تعرفت على فائدة الحزم مارأيك من الان فصاعد ان تستخدم الحزم في كتابة الاجرائيات والوظائف .



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



شكرا لكم ,,,,, اخوكم حمد.



فيديو ذو علاقة


الكاتب: صفوف انقر هنا لمراسلة صفوف أنقر هنا للإنتقال إلى موقع صفوف إضافة للمفضلة إضافة لمفضلة Google إضافة لمفضلة Delicious إضافة لمفضلة Digg إضافة لمفضلة Facebook
خيارات الدرس : ارسل الدرس لصديق ارسل الدرس لصديق  طباعة الدرس طباعة الدرس  حفظ الدرس كملف Word حفظ الدرس كملف Word  حفظ الدرس كملف PDF حفظ الدرس كملف PDF

 الدرس الثامن |  عرض الـ Row Constructors الموجودة في SQL Server 2008

التعليقات
لا يـوجـد تـعليـقات على هـذا الـدرس



أرشيف الأقسام
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44