بسم الله الرحمن الرحيم
الدرس الثالث عشر
اسم الدرس
:لغة PLSQL
نوع الدرس
: تطبيقي
صعوبة الدرس
: **** من *****
الوقت المتوقع منك لفهم الدرس
: اربع ساعات .
المتوقع منك في هذا الدرس
:
- التعرف على هذه اللغة ..
-
المتغيرات ...
- بعض النصائح البرمجية ...
هيا لنؤركل ^^
السلام عليكم
لغة الـ
PLSQL .....
ما هي هذه اللغة ...؟
لماذا نستخدمها ؟ وما فائدتها ؟؟؟
هي لغة تطويرية للغة
SQL ,, طورت الأوراكل هذه اللغة لتواكب متطلبات البرمجة الحديثة ,,
وهي اختصار لـ Procedure Language SQL أي اللغة الاجرائية لجمل الـ SQL
انا سوف اشرح وكأنك لا تعرف شيئا عن البرمجة ... سوف تلاحظ هذا في منهجي ....
لذا اذا كنت تعرف .... فاقول لك ... هذه لغة قوية جدا جدا جدا جدا جدا ......... مع التعامل مع قواعد البيانات ...
هي لغة برمجة مخصصة لبرمجة قواعد البيانات ...
شكلها يشبه لغة
ADA المشهورة (ADA لغة تم تطويرها لوزارة الدفاع الامريكية ... خلونا نبعد عن السياسة )
بها حلقات التكرار , بها مسارات منطقية و جمل شرطية ....بها مصائب اخرى .
اذا صادف وقد ربطت قواعد البيانات مع لغة اخرى مثل الجافا او الـ C# او الـ Visual Basic , فأقول لك ...
اخي , قل وداعا للتعب والربط وانشاء جمل الاستعلام , والتعقيد الذي يبطئ من انتاجية برمجة قواعد البيانات , ولتتعلم هذه اللغة التي تسهل لك برمجة قواعد البيانات !!
اذا لم تبرمج في حياتك .. اقول لك ,,,
اخي .. مارأيك في لغة
SQL , لو قلت لك ... اريدك ان تعدل بيانات مئة شخص ... ومن ثم تعرض لي بياناتهم قبل التعديل وبياناتهم بعد التعديل ؟ ماذا تفعل ... سوف تعرض اولا بياناتهم .. ثم تعدل .. ثم تبحث عن الذين عدلتهم وتعرض بياناتهم ...
اخي تخيل انك تستطيع ذلك في كتابة 5 الى 10 سطور ... ثم تكبس زر انتر ... وسيعملها الأوراكل اوتوماتيكيا ؟؟
تخيل انك تريد برنامج اوتوماتيكي ... مثلا لو جاء احدهم يوم السبت وعدل في جدول الموظفين , يرفض النظام ذلك , ولو عدل الموظف scott مثلا في جدول الأقسام يوم الثلاثاء فان النظام لا يقبل ...
تخيل هذه البرامج الذكية والاوتوماتيكية ... موجودة ؟ هل تستطيع عملها بالـ SQL ؟؟ طبعا لا ...
PLSQL
تستطيع عمل برامج اكثر عمومية , واكثر مرونة ... كيف يعني مرونة ... يعني أي شيء تريده يصير ... هذه اللغة تستطيع ذلك ...
طبعا لا غنى عن SQL فهي الام ولكن قدرتها محدودة في اوامر ... PLSQL تعطيك امكانيات اوسع لاستخدام الـ SQL ....
اذا لم تستطع فهم ذلك سوف ترى الكثير الكثير من الامثلة , لا تخف وكن معي ...
- قبل البدء :
اريدك يا صاحبي ... ان تتقن الـ
SQL ... اريدك ان تشربها كشرب الماء .. خذ يومين فيها ... خذ عشر ... خذ شهرين ... هذا ليس مهم ... الاهم ان تتقن الـ SQL .... ان لم تتقنها او لا تريد ذلك ... فلا تكمل معي .
- ما معنى برنامج :
البرنامج هو مجموعة اوامر للحاسب , مثال على هذه الأوامر "احسب ,اجمع , اطرح , اقسم , هات , خذ , سوي , افعل " هذه الأوامر مكتوبة بلغة برمجة ما ... من يكتبها ؟ المبرمج ..
البرنامج يحتوي على خطوات منطقية , او ما تسمى بالخوارزميات .... اذا لقيت وقت كافي فسوف اشرحها بالتفصيل . الان نريد ان نحسب مربع مجموع عددين .... ونريد اخبار الحاسب الغبي والذي لا يفهم شيء بل ينفذ الأوامر ليس الا .. نريد اخباره بالاوامر التي تحسب لنا هذه المسئلة ,, انظر
/
نحن :ياااا حاسب ....
الحاسب: نعم
نحن :خزن الرقم الاول
الحاسب:حاااضر
نحن :ياااا حاسب .... خزن الرقم الثاني
الحاسب:حاااضر ..
نحن :ياااا حاسب .. اجمعهما
الحاسب:حاااضر
نحن :ياااا حاسب.. خزن النتيجة في متغير
الحاسب:طيب ...
نحن :ياااا حاسب .... ضع النتيجة في متغير اخر
الحاسب: حاااضر
نحن :اووووف .... ياااا حاسب .... اضرب المتغيرين في بعضهما
الحاسب: طيييييييب
نحن :.... ياااا حاسب .... خزن النتيجة في متغير جديد ...
الحاسب:حاااضر
لاحظ اننا طفشنا ونحن نبرمج ونعطي الحاسب اوامر , والحاسب لا يطفش ولا يزهق , آلة غبية ولا تفكر ... تقرأ البرنامج وتطبق حتى لو كان فيروسا ... على فكرة ... الفيروس مجرد برنامج عادي , ولكن مبرمجه عمل هذا البرنامج للتخريب , يعني قال له يا حاسب , احذف , احرق , امسح , سوي , افعل .....
يعني نطلب من الحاسب كوارث ليس اوامر !! والكارثة العظمى "يا حااااسب ... فرمت الجهاز "
.
لاحظت كيف تعبنا في مسئلة صغيرة ؟ هذه خطوات الحل التي تحدث في عقلك وانت لا تعلم ....
مثلا 2 و 5 .. ماهو مربع جمعهما ؟؟
2 + 5 = 7
7 * 7 = 49
يعني هي خطوات حل ... هذا ما نقصده بالخوارزميات !!
وهي خطوات منطقية تؤدي الى حل ..
فهمت ؟؟
- ماهي لغات البرمجة :
هي اللغات التي يفهمها الحاسب , والتي لا يفهمها فعليا أي شخص , الا المبرمجون , هي كتابات وارقام وطلاسم .. اذا كنت مبرمج سوف تعرف ان تقرأها وستستنتج ماذا تعني ..
لغات البرمجة كثيرة , كل شركة تطلع لغة جديدة , لا تمر بضع سنين الا ونسمع لغة جديدة او تطوير لغة ما ,,
هذه اللغات سوف تتحول الى اصفار وواحدات ..... لا يفهمها الا الكمبيوتر , الكمبيوتر اصلا لا يفهم هذه اللغات !!
هو يفهم الصفر والواحد , هذه اللغات ستتحول (ببرنامج اخر مكتوب بلغة ما ) الى اصفار وواحدات يفهمها الحاسب بطريقة لا اريد سردها هنا .
- المتغيرات
Variables :
من اهم العناصر في البرمجة بشكل عام ,, احفظ الكلمة بالانجليزي ....
هل تذكر لما تكلمنا عن القرص الصلب وعن الذاكرة العشوائية (
RAM) ؟؟
قلنا ان القرص الصلب للذاكرة الدائمة , والبيانات التي نريد تخزينها للابد ,, ومثال على ذلك قواعد البيانات نفسها !!
الذاكرة العشوائية هي الذاكرة المؤقتة , والتي تخزن بيانات طالما ايش ؟ طالما انه فيه كهربة .... طالما ان الجهاز شغال , اذا طفى الجهاز , راحت البيانات الموجودة في هالذاكرة ,,
تكلمنا لماذا تلك ولماذا هذه , واهم الاشياء التي اريدك ان تستذكرها هي ان الذاكرة العشوائية ميزتها ميزة .. ماهي ؟
سرعتها التي تقدر باضعاف سرعة القرص الصلب ..لماذا هذه السرعة ؟ لانها الكترونية والقرص الصلب ميكانيكي ..
الالكتروني يعتمد على سرعة الالكترونات , يعني مثل سرعة الضوء !!
الان سوف تعرف لماذا بعض البيانات غير هامة لدرجة اننا نخزنها تخزين مؤقت ....
المتغيرات ماهي ؟
هي اوعية , هي شيء يحمل قيمة , أي قيمة .... يخزن القيمة بداخله .... طبعا المتغيرات هي جزء من الذاكرة , يعني اذا قلنا المتغير س أي ان س هذه حاجزة مكان في الذاكرة ... المتغيرات دائما لا نستطيع نحن البشر ان نرى ما بداخلها ... الا اذا نحن قلنا "س=10" فهذا يعني ان س بها العدد عشرة , واذا قلنا "س=اهلا وسهلا" يعني ان س بها القيمة "اهلا وسهلا" ,,, واعيد واكرر ,, المتغيرات هي جزء من ماذا ؟ من الذاكرة , يعني الذاكرة هي مجموعة متغيرات .
لماذا نستخدم المتغيرات ؟ ستعرف بعد قليل ...
قبل ان نبدأ باول برنامج نستعرض شكل وتركيب هذه اللغة ...
- تركيب هذه اللغة :
هذه اللغة لها شكل محدد وهو :
كود:
مجموعة تعريفات....
……
Begin
……
…مجموعة اوامر…
……
end;
Exception
……
…مجموعة اوامر ….
……
/
قبل البدء بالبرنامج الاول .....
لاحظ انني سوف استخدمة كلمة "جزئية" ...
مثلا جزئية التعريف يعني هي السطور ما بين الكلمة
declare والكلمة begin
او جزئية الأوامر .. أي السطور التي بين
begin وبين end ...
او جزئية الاستثناءات وهي السطور التي تحت كلمة
Exception
الان ... البرنامج الاول ... وهو اشهر برنامج , انه برنامج"
Hello world"
وهو ابسط برنامج يمكن كتابته .... وهو برنامج يعرض لنا الجملة
hello world على الشاشة ...
طبعا بنفس البرنامج SQL PLUS نعمل برامج هذه اللغة ,,, الان اريدك ان تكتب الامر التالي وهو الخاص بعرض الرسائل والمخرجات :
كود:
SQL> set serveroutput on ;
يجب ان تكتبه في كل مرة تفتح هذا البرنامج ... يعني اعمله مرة واحدة في كل مرة تقوم بتشغيل البرنامج ...
الان برنامج
hello world ..
كود:
SQL> begin
2 dbms_output.put_line('hello world');
3 end;
4 /
hello world
PL/SQL procedure successfully completed.
في السطر الاو كتبنا
begin .... يعني يا أوراكل ... هذا بداية برنامج بلغة PLSQL
في السطر الثاني كلام كثير جدا ...
dbms_output ثم نقطة ثم دالة ... بها مدخل Parameter , وهو مدخل واحد ,
ويظهر ان المدخل من نوع نصي ... انها دالة put_line("???")
وهي تأخذ ما بين القوسين (المدخل) .. وتخرجه لنا على الشاشة ..
السطر الثالث نهاية البرنامج
السطر الرابع .. يجب ان تكتبه لكي تقول للاوراكل "ياااا أوراكل ... نفذ بالله عليك برنامجي هذا "
يعني يجب ان تكتبه في كل برنامج .
الان انظر ماذا طبعت لنا ... طبعت لنا الجملة
hello world ...
انظر تحتها بكم سطر ... يقول
PL/SQL procedure successfully completed.
يعني خلاص ... كذا انتهى البرنامج ...
ركز في البرنامج السابق ... وانظر الى بلاهته .... ضع أي جملة من عندك .
الان لنضع جملتين
hello world بجانب بعضهما ...
الان سوف استرسل في هذه اللغة , وستتعلمها ان شاء الله بكل يسر وسهولة .
كود:
SQL> begin
2 dbms_output.put_line('hello world');
3 dbms_output.put_line('hello world');
4 end;
5 /
hello world
hello world
اوبس .... يظهر ان الدالة تضع كل مدخل .... في سطر ... على اسمها
put_line يعني ضع الجملة التالية في سطر.
لاحظ انه في كل نهاية جملة نضع الاشارة ; أي الفاصلة المنقوطة , يجب ان تضعها ...
في اماكن لا نضعها مثل begin و declare ... وغيرها .
الان نريد ان نستخدم المتغيرات ... كيف نستخدمها ؟
انظر البرنامج التالي ... وهو برنامج hello world .... ولكن من نوع اخر :
كود:
SQL> declare
2 abc varchar2(15) :='Hello World';
3 begin
4 dbms_output.put_line(abc);
5 end;
6 /
Hello World
يظهر ان هنالك نقطة جديدة ... وكلمة جديدة ... وهي
declare أي تعريف ... أي اننا نعرف متغيرات ... ومصائب اخرى ... ماهي هذه المصائب الاخرى ؟ ستعرفها لاحقا ...
السطر الاول : هي كلمة declare أي تعريف ...
السطر الثاني : عرفنا متغير .. اسمه abc ونوعه ماذا ؟؟ رقمي ؟ حرفي ؟ نصي ؟ تاريخ ؟؟
نوعه varchar2 وهو نص .... كما عرفنا سابقا , كم حده الاعلى ؟ يعني كم يستطيع ان يحمل هذا الوعاء .. ااقصد المتغير بداخله من نص ؟ 15 حرفا ... 15 خانة نصية ... او خانة حرفية ...
العلامة التي تشبه اليساوي := ما معناها ؟؟ معناها اسند .. ساوي ... ضع ... ضع ماذا ؟ ضع القيمة التي في اليمين ... في المتغير الذي في اليسار ... اكرر .. تضع هذه العلامة القيمة الي باليمين , في المتغير الي في اليسار ...
لاحظ انه سوف يضع hello world في المتغير abc ... ولا تنسى ان تضع التواريخ والنصوص بين علامة تنصيص احادية ....