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

 

المنتديات

 

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

 

قسم التصاميم

 

راسلنا

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

 

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

 

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

 سلسله دروس PL/SQL:الدرس السابع (الحزم)

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

تعلمنا سابق كيفية انشاء الاجراءت والوظائف المخزنة. لكن مارأيك لو وجد لدينا قاعدة بيانات كبيرة جدا ولنضرب مثال انها تحتوي على 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 ثم استدعينا اجراء الطباعة ليتم طبعة على الشاشة.

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

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

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

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

 

     

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

2003

شبكة بكسل

www.pxll.com