You are on page 1of 4

‫اإلجراءات المخزنة‪Stored Procedure:‬‬

‫‪ .1‬تعريـ ــف‪:‬‬
‫ىـ ــي مجموع ــة من العمليـ ــات أو الجمـ ــل المخزنـ ــة في قاعـ ــدة البيان ـ ــات والت ــي يت ــم استدعائــها‬
‫عنـ ــد الحاجة إليها‪.‬‬

‫المقصود بالعمليــات ىي تلك التي نطبقه ــا على قواعـ ــد البيانـ ــات من إستعـ ــالم ( ‪ ،)SELECT‬إضافــة‬
‫(‪ ،)INSERT‬تعديـ ــل (‪ )UPDATE‬و حـ ــذف (‪)DELETE‬‬

‫مثال‪ :‬جمل ــة إستع ــالم عاديـ ــة ‪ :‬رقم‪ ،‬لقب وإسم الطلبة من جدول الطالب (قاعدة البيانات موجودة في‬
‫آخر الدرس)‬

‫‪SELECT numetu, nom, prenom‬‬


‫;‪FROM ETUDIANT‬‬
‫لما نري ــد إدخـ ــال ىذه الجمل ـ ــة في إجـ ــراء مخزن‪ ،‬تك ـ ــون الصيغ ـ ــة كما يلي‪:‬‬

‫‪CREATE PROCEDURE liste_ETU‬‬


‫‪AS‬‬
‫‪SELECT numetu, nom, prenom FROM ETUDIANT‬‬

‫‪ .2‬عمليــة إنشـ ــاء اإلج ـ ـراءات المخزنـ ـ ــة‪:‬‬


‫‪ ،)Paramètres‬كما‬ ‫كما في أي لغة برمجة أي إجراء يمكن أن يحتوي على متغيرات أو وسائط (‬
‫يمكن أن يكون بدونها‪ ،‬فالصيغة العامة إلنشاء إجراء مخزن ىي‪:‬‬
‫إسم اإلجراء ‪CREATE PROC / PROCEDURE‬‬
‫)– ‪ -‬المتغيرات ‪(-- @ Params‬‬
‫‪AS‬‬
‫‪ --‬جسم اإلجراء المخزن ‪--‬‬

‫‪ .3‬تنفيذ اإلج ـ ـراءات المخزنـ ـ ــة‪:‬‬


‫'قيم المتغيرات' إسم اإلجراء المخزن ‪EXEC / EXECUTE‬‬

‫مثال عن إجراء مخزن بدون متغيرات‪:‬‬

‫نريد أن ننشئ إجراء مخزن يقوم بعرض جميع معلومات الطلبة فتكون الصيغة كما يلي‪:‬‬

‫‪CREATE PROC Info_Etu‬‬


‫‪AS‬‬
‫‪SELECT * FROM ETUDIANT‬‬
‫مثال عن إجراء مخزن بوجود متغيرات‪:‬‬

‫نريـ ــد أن ننش ــئ إجـ ـراء مخ ــزن للبحـ ــث ع ــن طالـ ــب ال علـ ــى التعييـ ـ ــن‪:‬‬

‫في ىذه الحالة يجب أن يكون ىناك متغير للبحث بواسطتو وليكن رقم الطالب فتكون صيغة اإلجراء‬
‫كمايلي‪:‬‬

‫) ‪CREATE PROC RECHERCHE ( @numetu int‬‬


‫‪AS‬‬
‫* ‪SELECT‬‬
‫‪FROM ETUDIANT‬‬
‫‪WHERE numetu = @numetu‬‬
‫تنفيذ اإلجراء‪:‬‬
‫‪EXEC RECHERCHE 5‬‬
‫في ىذه الحالة سوف يتم عرض بيانات الطالب رقم ‪5‬‬
‫مثال‪:02‬‬
‫إنشاء إجراء مخزن يقوم بإضافة سجل في جدول المادة ‪: Matiere‬‬
‫‪ INSERT INTO‬فيكون إنشاء اإلجراء المخزن‬ ‫نحن نعلم أن امر إضافة سجل في جدول ىو‬
‫الذي يقوم بإضافة سجل في جدول المادة كما يلي‪:‬‬
‫‪CREATE PROC Insert_Mat‬‬
‫) ‪( @codemat int, @libelle varchar(50), @coef int‬‬
‫‪AS‬‬
‫)‪INSERT INTO Matiere (codemat,libelle,coef‬‬
‫) ‪VALUES (@codemat, @libelle, @coef‬‬

‫مالحظة‪ :‬سينشئ في المثال السابق إجراء مخزن الذي يقوم بإضافة سجل جديد في جدول المادة‬
‫والوصول إلى ىذا اإلجراء كمكون في عارض المكونات في ‪ SQL Server‬يكون بإتباع المسار التالي‪:‬‬

‫ولتنفيذ اإلجراء السابق نكتب مايلي‪ :‬إضافة مادة جديدة‬


‫‪EXEC Insert_Mat 320,'B1',3‬‬

‫‪ .4‬فوائـ ــد اإلج ـ ـراءات المخزن ـ ــة‪:‬‬


‫‪ .1‬عمــل تطبيقــات محترف ــة حيــث يت ــم فص ــل جزئي ـ ــات قاع ــدة البيانـ ــات عن جزئي ــات لغـ ــة البرمج ــة‪.‬‬
‫‪ .2‬تنفيـ ــذ مجموع ـ ــة من الجمـ ـ ـ ــل من خ ــالل وصـ ــول وحيـ ــد إلى قاع ـ ــد ة البيانـ ــات‪.‬‬
‫‪ .3‬السرعة في تنفيذ الجمل من خالل اإلجراءات المخزنة حيث أنو تم تدقيقها مسبقا عند إنشائها‪.‬‬
‫‪ .4‬السري ــة و األم ــان حيــث يتم تجن ــب ذكــر أسمــاء الج ــداول أو الحقـ ــول عنـ ــد الحاج ــة للتعام ــل‬
‫معهــا من خالل لغة البرمجة حيث يتم استدعاء اسم اإلجراء المخزن فقط‪.‬‬
‫تطبيقـ ــات على اإلجـ ـراءات المخزنـ ــة‪:‬‬
‫لتكن قاعدة البيانات ‪ BASE‬المأخوذة في الدرس والممثلة في النموذج العالئقي التالي‪:‬‬
‫)‪Etudiant (numetu, nom, prenom, datenaiss,ville‬‬
‫)‪Matiere (codemat, libelle, coef‬‬
‫)‪Epreuve (numepreuve, dateepreuve, lieu, # codemat‬‬
‫)‪Notation (#numetu, #numepreuve, note‬‬

‫بعد إنشاء قاعدة البيانات المطلوب إنشاء اإلجراءات المخزنة التالية‪:‬‬


‫‪ .1‬البحث عن جميع السجالت في جدول التنقيط‬
‫‪ .2‬إضافة مادة في جدول المواد‬
‫‪ .3‬تغيير سجل في جدول الطالب‬
‫‪ .4‬حذف سجل من جدول اإلمتحان‬
‫‪ .5‬البحث عن تنقيط مادة في جدول التنقيط‬

‫تجميع وإعداد األستاذ‪ :‬منصــور فتحــي‬

‫أستاذ متخصص في التكوين والتعليم المهنيين درجة ‪( 2‬تخصص إعالم آلي)‬

You might also like