الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سلسلة تعلم Mysql Stored Procedures

بدأه Slayer666 في 20 سبتمبر 2008 · 9 رد · 8,412 مشاهدة · في قواعد بيانات MySQL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلسلة تعلم MySQL Stored Procedures

الدرس الاول :- ماهي الوحدات البرمجية / المتغيرات / العوامل

ماهو البروسيجر:- و هو وحدة برمجية تخزن داخل ال MySQL تحتوي على ايعازات برمجية بسيطة بالضافة الى الاستعلامات و يمكن استدعائها من اي لغة برمجة او عند حدث (Event) او عند تشغل قادح (Trigger)

بعد الاصدار الخامس بدء دعم الوحدات البرمجية داخل الMySQL و هو اضافة من اهم الاضافات التي تم اضافتها الى ال MySQL الان يمكنك كاتبة الوحدات كما الحال مع انواع القواعد البيانات الكبيرة مثل Oracle و MsSQL النسخ القديمة لا تدعم ال Stoned Procedures

ما هي فوائدها

1- عند انشاء البروسيجر يتم ترجمته (compiled) داخل السيرفر مما يزيد من الاداء و السرعة اي ان الProcedures هي اسرع من الاستعلامات الاعتيادية

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

3- الامن يمكنك الان اعطاء صلاحيات استعمال البروسيجر و تمنع المستخدمين من روئية الجداول مباشرةً

4- تقلل الحزم المنقولة من السيرفر اي عند استخدام الProcedures سوف يتم ارسال اسم البروسيجر مع Parameters فقط بدون ارسال الاستعلام كامل

5- ان كنت مدير قواعد البيانات يمكنك اخفاء اسماء الجداول عن المبرمج و اخبار باسماء البروسيجرات التي يمكن استعدائها فقط

الاضرار

يوجد ضرر واحد فقط عن استخدام البروسيجر و هو سوف تضيف حملاً زائدا على السيرفر في بعض الاحيان

قبل البداية بالدرس سوف اخبركم عن اداء رائعة يمكن كتابة اي Procedure من داخلها انا شخصيا استخدمها

الاداء هي Toad for MySQL

و هذا رابط التحميل

http://www.toadsoft.com/toadmysql/FreewareDownload.htm

و هي صورة للبرنامج تحتوي على شرح بسيط

post-59755-1221912668_thumb.jpg

تكوين اول بروسيجر

الصيغية الاساسية لتكون

Create Procedure procedureName()
Begin
// هنا الاكواد البرمجية و الاستعلامات
End

الان سوف نقوم بكتابة برنامج صغير سوف استخدم Toad و انت ايضا قم بتحميل هذا البرنامج الرائع

لانشاء Procedure جديد

post-59755-1221912745_thumb.jpg

الان نقوم بنشاء وحدة برمجية بسيطة تعيد لنا اسم هذا اسم هذا المنتدى

post-59755-1221912820_thumb.jpg

الان لنذهب الى MySQL Line Command و نستعدي البروسيجر

يتم استعداء البروسيجر بواسطة CALL يليها اسم البروسيجر

post-59755-1221912877_thumb.jpg

المتغيرات

المتغيرات هي مكان يحجز لخزن البيانات و القيم داخل الProcedure

انواع البيانات في MySQL Proceder هي نفس انواع الاعمدة MySQL

INT , SMALLINT , DATETIME, VARCHAR ... الى اخره

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

يتم تصريح المتغيرات بعد الكلمة المفتاحية DECLARE

امثلة

Declare varName INT
Declare varName2 VARCHAR(10)
DECLARE varName3 DATETIME

عند تصريح المتغير تكون قيمتة null يمكن تغيرها

يمكن تغيرها بعد اضافة DEFAULT و كتابة القيمة

DECLARE varName INT DEFAULT 5

تغير قيمة المتغيرات

هناك طريقتان لتغير قيمة المتغرات في ال MySQL

الاول استعامل الكلمة المفيتاحية Set

DECLARE  myVar INT DEFAULT 6;
SET myVar = 50;

DECLARE myVar VARCHAR(120);
DECLARE myVar2 VARCHAR(120);
SET myVar = myVar2;

الطريقة الثانية اضاف ناتج استعلام الى المتغيرات بستخدام ال INTO

DECLARE UserName VARCHAR(120);
SELECT Name INTO UserName From Users Where userID = 3;

Parameters العوامل

مافائدة الوحدة ان لم نستطيع تمرير و استرجاع قيم من خارج الوحدة

هناك ثلاث انواع من العوامل في الMySQL

IN , OUT, INOUT

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

OUT:- قيمة تبدى بقيمة null و تستطيع تغير قيمتها ثم ارسالها القيمة الجديدة خارج الوحدة

INOUT :- و هي عبارة عن دمج النوعان السابقان

امثلة

مثال ادخال قيمة عن طريق IN

CREATE PROCEDURE GetName(IN ID INT)
BEGIN
	SELECT Name From users Where userID = ID;
END;

post-59755-1221912931_thumb.jpg

مثال اخراج قيمة عن طريق ال OUT

CREATE PROCEDURE GetName(IN ID INT, OUT UserName VARCHAR(50))
BEGIN
	SELECT Name INTO UserName From users Where userID = ID;
END;

post-59755-1221912972_thumb.jpg

عند اضافة الرمز @ قبل المتغير فهذا المتغير سوف يستمر حتى نهاية الSession

اما باقي المتغيرات في دورة حياتها تكون بين Begin و ال End

وصلنا الى نهاية الدرس الاول و في النهاية واحب منزلي (فروض منزلية)

السؤال الاول

اكتب Procedure نرسل له عاملان الاول من نوع IN و الثاني من نوع OUT

وضيفتية هي وضع قيمة العامل IN في العامل OUT

اكتب Procedure نرسل له 4 عوامل من نوع IN و يقوم بادخالها الى قاعد البيانات

INSERT INTO Users (ID , Name , Country , age) value(?,?,?,?)

اكتب Procedure يعيد لنا 3 عوامل(Name , Country, Age) بعد ارسالة له عامل واحد ID

و يجلب المعلومات من جدول في قاعد البيانات Users

سوف اعمل على الدرس الثاني بعد ان ارى تفاعلكم مع الموضوع

تم تعديل هذه المشاركة بواسطة Slayer666 في 20 سبتمبر 2008 في 15:33

2
#2

السلام عليكم بارك الله قيك ربي يجعلها في ميزان حساناتك

ياليت أتكمل

#3
mohammeding كتب:
السلام عليكم بارك الله قيك ربي يجعلها في ميزان حساناتك

ياليت أتكمل

إن شاء الله سوف اكمل

ولكن ننتظر تجاوب الاعضاء و لا تنسى تحضير الواجب :lol:

#4

الله يعطيك العافي، وجعله الله في ميزان حسناتك

#7

مشكور اخوي الله يعافيك

#8

شكراً اخوي كرار ,,

موضوع مفيد جداً ,,

تقبل مروري

#9

السلام عليكم

الله يجزاك الخير على الشرح.

وارجو الاستمرار في الشرح

#10

السلام عليكم اخى qadi_ahmad

ممكن تساعدنى فى كيفية متابعةهذا الموضوع

بجد لانى حاولت كتير مش لاقى اكتر من الصفحة دى

الحلقة الاولى فقط . وهل فى حلقات اخرى .

ارجو المساعدة.ٍ

مواضيع مشابهة