100% found this document useful (1 vote)
2K views25 pages

Arabic Introduction To - PL-SQL

الكتاب يتناول موضوع تصميم قواعد البيانات PL-SQL. يحتوي على العديد من الفصول حول مفاهيم ومكونات لغة PL-SQL مثل المتغيرات، الثوابت، أنواع البيانات، طرق تنفيذ البرامج، والمزيد.

Uploaded by

Walaa Elamry
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
2K views25 pages

Arabic Introduction To - PL-SQL

الكتاب يتناول موضوع تصميم قواعد البيانات PL-SQL. يحتوي على العديد من الفصول حول مفاهيم ومكونات لغة PL-SQL مثل المتغيرات، الثوابت، أنواع البيانات، طرق تنفيذ البرامج، والمزيد.

Uploaded by

Walaa Elamry
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 25

‫‪1‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

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


‫‪2‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫محتويات الكتاب ‪:‬‬


‫الموضوع‬ ‫م‬
‫الفصل الول ‪ :‬مدخل إلى لغة ‪PL/SQL‬‬
‫مقدمة‬ ‫•‬ ‫‪1‬‬
‫مميزات اللغة‬ ‫•‬ ‫‪2‬‬

‫ماذا أحتاج لتعلم اللغة‬ ‫•‬ ‫‪3‬‬


‫‪4‬‬
‫كتابة البرنامج الول‬ ‫•‬
‫‪5‬‬
‫طرق تنفيذ البرنامج‬ ‫•‬
‫‪6‬‬
‫مكونات كتلة الترميز ) أجزاء البرنامج (‬ ‫•‬
‫‪7‬‬
‫الكلمة المفتاحية )‪ (GOTO‬القفز الغير المشروط‬ ‫•‬
‫‪8‬‬
‫التعليقات‬ ‫•‬
‫‪9‬‬
‫تمارين على الفصل الول‬ ‫•‬
‫الفصل الثاني ‪ :‬المتغيرات والثوابت‬
‫تعريف المتغيرات‬ ‫•‬ ‫‪1‬‬
‫أهمية المتغيرات‬ ‫•‬ ‫‪2‬‬

‫استخدامات المتغيرات‬ ‫•‬ ‫‪3‬‬


‫‪4‬‬
‫شروط تسمية المتغيرات‬ ‫•‬
‫‪5‬‬
‫أنواع المتغيرات في اللغة‬ ‫•‬
‫كيفية تعريف المتغيرات في اللغة‬ ‫•‬
‫البيانات الرقمية‬ ‫‪‬‬
‫البيانات النصية‬ ‫‪‬‬
‫‪6‬‬
‫البيانات الخرى‬ ‫‪‬‬
‫القيود‬ ‫‪‬‬
‫الداة ‪TYPE%‬‬ ‫‪‬‬
‫الداة ‪ROWTYPE%‬‬ ‫‪‬‬ ‫‪7‬‬
‫أمثلة على الفصل الثاني‬ ‫•‬
‫‪8‬‬
‫تمارين على الفصل الثاني‬ ‫•‬
‫‪3‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬
‫‪4‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬
‫‪5‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫الفصل الول‬
‫‪QS/LP‬‬ ‫مدخل إلى لغة‬
‫‪6‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫المقدمة ‪:‬‬
‫تعتبر اللغة ‪ PL/SQL‬هي لغة البرمجة في نظام أوراكل ‪ ،‬وهي أداة برمجية قوية ‪ ،‬وكلمة ‪PL/SQL‬‬
‫اختصارًا لـ )‪ ،( Procedure Language/Structure Query Language‬وتستخدم هذه اللغة لتجهيز‬
‫نظام ‪ Oracle‬عن طريقة معالجة التسجيلت ‪ ،‬وتستخدم أيضًا في أدوات التطوير المنتجة من قبل شركة‬
‫‪ ، Oracle‬وهي تعتبر أساس برنامج بناء النماذج ‪ Oracle Forms‬و ‪ . Oracle Reports‬وتستخدم هذه‬
‫اللغة أيضًا لتعريف نموذج ما ‪ ،‬والقيام ببعض الحسابات الخاصة في تقرير ما ‪ ،‬ومن أجل التسجيلت ‪.‬‬
‫‪----------------------------------------------------------------------------------------------------‬‬

‫مزايا لغة ‪: PL/SQL‬‬


‫التكامل ‪ :‬وهذه اللغة دور أساسي بين أجزاء وأدوات أوراكل حيث يكتب بها أكواد )‪(Forms‬‬ ‫‪-1‬‬

‫ويتم بها برمجة أجزاء وأدوات الوراكل ‪.‬‬


‫تحسين الداء ‪ :‬حيث يمكن لـ ‪ PL/SQL‬تحسين أداء التطبيقات وذلك من خلل ‪:‬‬ ‫‪-2‬‬

‫)‪Data‬‬ ‫تجميع جمل ‪ SQL‬معًا في بلوك واحد ) كتلة واحدة ( وإرسالهما إلى خادم‬ ‫‪-1‬‬

‫‪ (Base‬لتنفيذها دفعة واحدة مما يؤدي إلى ارتفاع مستوى الداء عامة ‪.‬‬
‫يمكن لـ ‪ PL/SQL‬العمل داخل أي جزء من أجزاء وأدوات ‪ Oracle‬وبذلك يضيف قوة‬ ‫‪-2‬‬

‫المعالجة الجرائية إلى هذه الدوات )‪ ، ............، (Oracle Forms) ،(Oracle Reports‬مما‬
‫يؤدي إلى تحسين مستوى الداء ‪.‬‬
‫تطوير البرنامج ‪ Modularized‬وذلك بـ ‪:‬‬ ‫‪-3‬‬

‫تجميع منطقي للبيانات داخل كتل )‪ (Blocks‬البرنامج ‪.‬‬ ‫‪-1‬‬

‫الكتل المتداخلة )‪ (Nested Blocks‬تتيح العديد من المزايا ‪.‬‬ ‫‪-2‬‬

‫‪ -3‬إتاحة تقسيم المشاكل المعقدة إلى مجموعة أبسط من المشاكل يمكن حّلها ببساطة ‪.‬‬
‫الستفادة من خبرات وأكواد سابقة بجمعها في شكل مكتبات )‪ (Libraries‬يمكن الستفادة‬ ‫‪-4‬‬

‫منها بين أدوات ‪ Oracle‬المختلفة ‪.‬‬


‫يمكن تنفيذ كود ‪ PL/SQL‬من أي أداة من أدوات ‪ Oracle‬المختلفة ‪.‬‬ ‫‪-5‬‬

‫يمكن تعريف المتغيرات والمتحولت )‪ (Variables‬التي تستقبل العديد من أنواع البيانات‬ ‫‪-6‬‬

‫المختلفة مثل الرقام والنصوص والصور والفيديو والبيانات المركبة ‪ ....‬الخ ‪.‬‬
‫‪7‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫‪ -7‬وتحتوي أيضًا على المميزات الخرى مثل أوامر التكرار والتحكم في سير البرنامج ومعالجة‬
‫الخطاء والستثناءات وووووو‪....‬الخ ‪.‬‬
‫‪----------------------------------------------------------------------------------------------------‬‬

‫ماذا أحتاج لتعّلم هذه اللغة ‪:‬‬


‫ل أحتاج إلى شيء إضافي ما دام عندي برنامج ‪ SQL*Plus‬منّزل على جهازي من قبل ‪،‬فبرنامج‬
‫‪ SQL *Plus‬يفي بالغرض لتعّلم وكتابة هذه اللغة ‪ ،‬الذي أحتاج فقط إلى المعرفة والقدرة على كتابة أوامر‬
‫‪ SQL‬وإني اجتزت هذه المادة بشكل جيد ‪.‬‬
‫‪---------------------------------------------------------------------------------------------------‬‬

‫كتابة البرنامج الول بلغة ‪: PL/SQL‬‬


‫يمكن كتابة برامج ‪ PL/SQL‬وتنفيذها من محث ‪ SQL‬ضمن برنامج ‪ . SQL *Plus‬ولكن‪ ،‬وبسبب‬
‫درجة تعقيد وطول البرامج‪ ،‬ل تعتبر آلية مفضلة الستخدام ‪ .‬إذ يفضل تطوير البرنامج في أي محرر‬
‫نصوص مثل المفكرة ‪ Notepad‬أو باني الجرائيات في نظام ‪ . Oracle‬وبعد ذلك يمكن استدعاء ملفات‬
‫البرامج ضمن ‪. SQL *Plus‬‬
‫هيا نكتب برنامجنا الول بلغة ‪ ، PL/SQL‬فلنفتح برنامج ‪ SQL *Plus‬وكتابة البرنامج التالي ‪،‬‬
‫وهذا البرنامج لطباعة رسالة )‪: (Hello‬‬
‫القائمة ‪1-1‬‬

‫فالبرنامج السابق يتألف من كتلة ترميز بلغة ‪ PL/SQL‬تحتوي على تعليمة واحدة ‪ُ .‬تظهر الرسالة )‬
‫‪. (Hello‬‬
‫‪8‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫بعض الخصائص الهامة للبرنامج السابق ‪:‬‬


‫يبدأ بكلمة )‪ (Begin‬وينتهي بكلمة )‪. (End‬‬ ‫‪-‬‬

‫أمر الطباعة في لغة ‪ PL/SQL‬هر )‪. (DBMS_OUTPUT.PUT_LINE‬‬ ‫‪-‬‬

‫تتكون كتل ترميز ‪ PL/SQL‬من تعليمات ‪ ،‬وكل تعليمة تنتهي بفاصلة منقوطة ‪.‬‬ ‫‪-‬‬

‫يتم وضع )‪ (/‬في نهاية كتلة ترميز ‪ PL/SQL‬لتنفيذ تعليمات كتلة الترميز ‪.‬‬ ‫‪-‬‬

‫تعتبر الكلمة المفتاحية )‪ (END‬هي الكلمة المفتاحية الوحيدة في كتلة ترميز‬ ‫‪-‬‬

‫‪ PL/SQL‬التي تنتهي بفاصلة منقوطة ‪.‬‬


‫ملحوظة مهمة ‪:‬‬
‫ل حظ أن أول سطر في البرنامج السابق كلمة )‪، (SET SERVEROUTPUT ON‬هي تعليمة‬
‫‪ SET‬التابعة لبرنامج ‪ SQL *Plus‬المسؤولة بإظهار الرسائل المرسلة من قبل الجرائيات الموجودة في‬
‫الحزمة البرمجية ‪ ، DBMS_OUTPUT‬يجب وضعها مرة واحدة فقط ضمن جلسة العمل ‪ ،‬فإذا لم تكن‬
‫هناك استخدام للحزمة البرمجية ‪ DBMS_OUTPUT‬فل داعي إلى استخدام هذه التعليمة ‪.‬‬
‫‪----------------------------------------------------------------------------------------------------‬‬
‫ل جملة‬
‫أعتقد إلى هنا ما توصلنا إلى حاجة مرتبة مفهومة ‪ ..‬فأنا لست مطالبًا بأي حاجة إلى هنا إ ّ‬
‫‪ : SET_SERVEROUTPUT ON‬يجب استخدامها مرة واحدة فقط ضمن جلسة العمل إن كان هناك‬
‫استخدام جملة ‪ DBMS_OUTPUT.PUT_LINE‬المسؤولة لتنفيذ أمر ما ‪.‬‬
‫‪---------------------------------------------------------------------------------------------------‬‬

‫طرق تنفيذ برنامج ‪: PL/SQL‬‬


‫إذا كانت الكتلة البرمجية لترميز ‪ PL/SQL‬مكتوب داخل برنامج ‪ SQL *Plus‬فيمكن تنفيذها‬ ‫‪-1‬‬

‫بـوضع )‪ (/‬بعد نهاية كتلة الترميز مباشرة ‪.‬‬


‫وإذا كانت الكتلة البرمجية لترميز ‪ PL/SQL‬في ملف خارجي فيمكن تنفيذها من محث‬ ‫‪-2‬‬

‫‪ SQL *Plus‬باستخدام الكلمة المفتاحية )‪ (START‬أو الرمز )@(‪ .‬وهذا النوع من الكتل‬
‫البرمجية تسمى ) إجرائيات كتل مجهولة ( ‪ .‬والشكل العام لستخدام هذه الكلمة المفتاحية ‪:‬‬
‫مسار الملف \اسم الملف ‪.‬المتداد ‪START‬‬
‫‪9‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫وبعد النتهاء من تنفيذ كتلة ترميز ‪PL/SQL‬سيظهر نظام ‪ Oracle‬الرسالة التالية‪:‬‬


‫‪ PL/SQL‬تم نجاح إجراء‬
‫أو‬
‫‪PL/SQL procedure successfully completed‬‬
‫والتي تخبرنا بأنه تم تنفيذ البرنامج بنجاح ‪ ،‬أما إذا حدث أي خطأ فإن نظام ‪ Oracle‬سيصدر رسالة خطأ ‪.‬‬
‫من هنا نبدأ الجد‪---------------------------------------------------------‬علينا الصبر والمثابرة‬

‫مكونات كتلة الترميز) أجزاء البرنامج ( ‪:‬‬


‫لكتابة أي برنامج بلغة ‪ PL/SQL‬يجب علينا أن نعرف أن ترميز كتلة ‪ PL/SQL‬يتكون من أربعة‬
‫مقاطع وهي بالترتيب ‪:‬‬
‫‪ -1‬الترويسة ‪ :‬وهو مقطع اختياري في كتلة الترميز ‪ .‬ويستخدم لتحديد نوع كتلة الترميز واسمها ‪ .‬وأنواع‬
‫كتل الترميز هي ‪ anonymous procedure :‬أي إجرائيــــــة مجهـــولة السم ‪ ،‬و ‪named procedure‬‬
‫أي إجرائية لها اسم ‪ ،‬و ‪ function‬أي تابع ‪ .‬وتستخدم الترويسة مع النوعين الخيرين فقط ‪.‬‬
‫‪ -2‬التصريح ‪ :‬وهو أيضًا مقطع اختياري في كتلة الترميز‪ .‬ويحتوي على أسماء الغراض المحلية التي سيتم‬
‫استخدامها في كتلة الترميز ‪ .‬وتتضمن المتغيرات وتعاريف المؤشرات والستثناءات ‪ ،‬ويبدأ هذا المقطع‬
‫بالكلمة الفتتاحية )‪. (DECLARE‬‬
‫‪ -3‬التنفيــذ ‪ :‬وهو المقطع الجباري الوحيد في كتلة الترميز ‪ .‬ويحتوي كل التعليمات التي سيتم تنفيذها ‪،‬‬
‫والتي تتألف من تعليمات ‪ ، DML‬إجرائيات )كتل ترميز ‪ ، (PL/SQL‬توابع )كتل ترميز ‪ PL/SQL‬تعيد‬
‫قيمة ما(‪،‬وبرامج جزئية مسبقة البناء‪ .‬ويبدأ هذا المقطع بالكلمة الفتتاحية )‪. (BEGIN‬‬
‫‪ -4‬الستثناءات ‪ :‬وهو مقطع اختياري ‪ .‬ويستخدم للتقاط ومعالجة أي خطأ يحدث أثناء التعليمات الموجودة‬
‫في المقطع التنفيذي ‪ .‬ويبدأ هذا المقطع بالكلمة المفتاحية )‪. (EXCEPTION‬‬
‫ملحوظة ‪:‬‬
‫* ويلي ذلك كله الكلمة المفتاحية )‪ (END‬لنهاء كتلة الترميز ‪ ،‬وهي الكلمة المفتاحية الوحيدة التي‬
‫تنتهي بفاصلة منقوطة ‪.‬‬
‫* ولتنفيذ كتلة الترميز يتم وضع الرمز )‪ slash (/‬بعد نهاية كتلة الترميز ‪.‬‬
‫‪10‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫والشكل العام لكتلة الترميز ‪:‬‬

‫‪DECLARE‬‬
‫جزء التصريح والتعريف( هنا يتم وضع المتغيرات وتعاريف المؤشرات والستثناءات(‬

‫‪BEGIN‬‬
‫)هنا يتم وضع التعليمات التي سيتم تنفيذهـا )جزء التنفيذ‬

‫‪EXCEPTION‬‬
‫جزء الستثناءات( هنا يتم وضع الستثناءات(‬

‫;‪END‬‬ ‫نهاية الكتلة البرمجية( هذه الكلمة يجب وضعها في نهاية كتلة الترميز لنهاء الكتلة(‬
‫‪/‬‬ ‫)وهذا الرمز يتم وضعه لتنفيذ كتلة الترميز )تنفيذ الكتلة البرمجية‬

‫سوف نأخذ المثال التالي ‪:‬‬


‫كتلة برمجية يسترجع اسم الموظف الذي يحمل الرقم )‪ (7782‬من جدول الموظفين )‪ ، (EMP‬ثم‬
‫طباعته‪،‬وإذا كان هناك حدوث أي خطأ على التعليمات التنفيذية سيظهر رسالة )‪. (ERROR OCCURED‬‬

‫تعريف متغير من النوع الحرفي طوله ‪30‬‬


‫حرفًا‬

‫هنا جملة الستعلم عن اسم الموظف الذي يحمل الرقم ‪7782‬‬


‫وطباعته‬

‫تعليمات الستثاء‬

‫هذا اسم الموظف المسترجع من جملة الستعلم‬

‫‪----------------------------------------------------------------------------------------------------‬‬
‫‪11‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫الكلمة المفتاحية )‪ (GOTO‬القفز الغير المشروط ‪:‬‬


‫تستخدم الكلمة المفتاحية )‪ (GOTO‬لجراء قفز غير مشروط والنتقال من مقطع من كتلة الترميز‬
‫إلى مقطع آخر‪ .‬ولستخدام هذه الكلمة المفتاحية هناك قواعد وتعليمات يجب إتباعها وهي بالترتيب ‪:‬‬
‫تعريف العناوين ‪ :‬وذلك بوضع إشارتي )>>( قبل اسم العنوان وإشارتي )<<( بعد اسم‬ ‫‪-1‬‬

‫العنوان ‪.‬‬
‫يتم استخدام الكلمة المفتاحية )‪ (GOTO‬ثم وضع اسم العنوان المراد القفز إلى هناك بعد )‬ ‫‪-2‬‬

‫‪. (GOTO‬‬
‫ملحوظة ‪:‬‬
‫س ‪/‬ما المقصود بتعريف العناوين الذي أشرنا إليه في الفقرة رقم واحد ؟‬
‫ج ‪/‬تعرف العناوين بأنها وسائل تستخدم لوضع علمات لمقاطع كتلة الترميز ‪.‬‬

‫سنأخذ المثال التالي ‪:‬‬


‫كتلة برمجية تستخدم الكلمة المفتاحية )‪ (GOTO‬لقفز غير مشروط من مقطع إلى مقطع آخر ‪ ،‬تحتوي ثلث‬
‫تعليمات تنفيذية ‪ ،‬يتم تنفيذ التعليمة الوسطى ثم الولى ثم التعليمة الخيرة ‪:‬‬

‫الشرح ‪:‬‬
‫عند بداية تنفيذ البرنامج يحصل‬
‫الجملة التالية )‪(goto middle‬‬
‫فيذهب إلى المقطع )‪(middle‬‬
‫وينفذ التعليمات ثم يحصل الجملة‬
‫التالية )‪ (goto top‬فيذهب إلى‬
‫المقطع )‪ (top‬وينفذ التعليمات ثم‬
‫يحصل الجملة التالية‬
‫)‪ (goto bottom‬فيذهب إلى‬
‫المقطع )‪ (bottom‬ثم يحصل‬
‫كلمة )‪ (end‬فينهي البرنامج ‪.‬‬

‫ملحوظة ‪:‬‬
‫‪12‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫يوصي العديد من الخبراء في هذا المجال بعدم استخدام التعليمة )‪ ، (GOTO‬فهي تجعل فقدان‬
‫ل ‪ .‬وهي للستخدام في بعض الحالت النادرة التي يمكن أن تجعل البرنامج‬
‫السيطرة على التطبيقات أمرًا سه ً‬
‫أسهل وأبسط ‪.‬‬

‫التعليقات ‪:‬‬
‫كأي لغات البرمجة الخرى يمكن إدخال التعليقات ضمن كتلة الترميز ‪ ،‬ويوضع المبرمج مثل هذه‬
‫التعليقات لتسهيل أمره وقت مراجعته وتطويره للبرنامج بعد فترة زمنية ‪ ،‬ول تؤثر هذه التعليقات في حجم‬
‫البرنامج أبدًا ‪ .‬ويوجد أداتان لكتابة هذه التعليقات ‪:‬‬
‫‪ -1‬لكتابة تعليق سطرًا واحدا ‪ ً:‬يتم وضع إشارتي ناقص )‪ (--‬في بداية السطر الذي نرغب بوضعه‬
‫كتعليق ‪.‬‬
‫ولكتابة تعليق عدة أسطر ‪ :‬يتم وضع الرمز )‪ (*/‬في بداية التعليق ‪ ،‬ووضع الرمز )*‪ (/‬في‬ ‫‪-2‬‬

‫نهاية التعليق ‪.‬‬


‫‪----------------------------------------------------------------------------------------------------‬‬
‫‪13‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬
‫‪14‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫تمارين على الفصل الول‬

‫السؤال الول ‪:‬‬


‫ضع علمة صح )( أما العبارة الصحيحة وعلمة )( خطأ أمام العبارة الخاطئة ‪:‬‬
‫(‬ ‫)‬ ‫‪ -1‬لغة ‪ PL/SQL‬هي أساس البرمجة في نظام أوراكل ‪.‬‬
‫(‬ ‫)‬ ‫‪ -2‬من مزايا لغة ‪ PL/SQL‬التكامل فقط ‪.‬‬
‫(‬ ‫)‬ ‫‪ -3‬ل يمكن تنفيذ أكواد ‪ PL/SQL‬من أي أداة من أدوات أوراكل المختلفة ‪.‬‬
‫(‬ ‫)‬ ‫‪ -4‬يمكن كتابة أكواد ‪ PL/SQL‬في محرر نصوص ثم استدعاؤه من محث ‪. SQL *Plus‬‬
‫(‬ ‫)‬ ‫‪ -5‬الكلمة المفتاحية الوحيدة التي تنتهي بفاصلة منقوطة هي )‪. (End‬‬
‫(‬ ‫)‬ ‫‪ -6‬ولتنفيذ كتلة الترميز يتم وضع الرمز )*( ‪ star‬بعد نهاية كتلة الترميز ‪.‬‬
‫(‬ ‫)‬ ‫‪ -7‬المقطع الجباري الوحيد هو المقطع التنفيذي )‪.(Begin‬‬
‫(‬ ‫)‬ ‫‪ -8‬الكلمة )‪(GOTO‬تشير إلى القفز المشروط ‪.‬‬

‫السؤال الثاني ‪:‬‬


‫أجب عما يأتي ‪:‬‬
‫‪ -1‬إذا كان ملف كتلة الترميز مكتوب في ملف خارجي ‪ .‬فكيف يتم استدعاؤه من محث ‪ SQL *Plus‬؟‬
‫_______________________________________________________________‬
‫_______________________________________________________________‬

‫‪ -2‬ما هو الرمز المستخدم في كتابة تعليق لسطر واحد فقط ؟ وما هو الرمز المستخدم في كتابة عدة أسطر؟‬
‫________________________________________________________________‬
‫________________________________________________________________‬

‫‪ -3‬أكتب كتلة برمجية يتم فيه طباعة النص التالي )‪ (Welcome To PL/SQL‬؟‬
‫‪15‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫الفصل الثاني‬
‫المتغيرات والثوابت‬
‫‪16‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫المتغيرات والثوابت ‪:‬‬


‫تعريف المتغيرات ‪:‬‬
‫إن المتغير هو موقع تخزين ‪ -‬من أجل حفظ قيمة ‪ -‬يمكن أن يتم إسناد قيمة إليه ‪ ،‬وسمي متغبر لنه‬
‫يمكن أن تتغير قيمته أثناء تنفيذ البرنامج ‪.‬‬
‫أهمية المتغيرات ‪:‬‬
‫حجز مكان في الذاكرة للمتغير ‪.‬‬ ‫‪-1‬‬
‫إعلم المترجم بنوع البيانات التي يمكن أن تخزن في المتغير ‪.‬‬ ‫‪-2‬‬
‫استخدامات المتغيرات ‪:‬‬
‫تخزين مؤقت للبيانات ‪.‬‬ ‫‪-1‬‬
‫التعامل مع قيم مخزنة ‪.‬‬ ‫‪-2‬‬
‫إعادة استخدام البيانات نتيجة تغيرات داخل وأثناء البرنامج ‪.‬‬ ‫‪-3‬‬
‫الختصار وسهولة التعديل والصيانة وذلك من استخدام )‪ (type%‬و )‪ (rowtype%‬سيأتي‬ ‫‪-4‬‬

‫شرحها لحقًا ‪ ،‬و من خللهما يمكن تعريف متغير حسب نوع عمود أو صف في قاعدة البيانات مما‬
‫يتيح قدر كبير من المرونة دون التقيد بنوع معين من البيانات ‪.‬‬
‫شروط تسمية المتغيرات ‪:‬‬
‫اسم المتغير يجب أن يبدأ بحرف ‪.‬‬ ‫‪-1‬‬
‫يمكن أن يحتوي اسم المتغير على حروف وأعداد أو شرطة سفلية أو الحرف ‪. $‬‬ ‫‪-2‬‬
‫ل يحتوي اسم المتغير على رموز خاصة ‪.‬‬ ‫‪-3‬‬
‫ل يحتوي اسم المتغير على مسافات ‪.‬‬ ‫‪-4‬‬
‫ل يكون اسم المتغير ضمن السماء المحجوزة في اللغة مثل ‪ ... Declare, for, if‬الخ‪.‬‬ ‫‪-5‬‬

‫ل ‪ x‬ل يختلف عن ‪. X‬‬


‫لغة ‪ PL/SQL‬ل تفرق بين الحروف الكبيرة والصغير فمث ً‬ ‫‪-6‬‬

‫يفضل أن يكون اسم المتغير ذو معنى ‪.‬‬ ‫‪-7‬‬


‫‪17‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫أنواع المتغيرات في لغة ‪: PL/SQL‬‬


‫تنقسم المتغيرات إلى قسمين أساسين ‪:‬‬
‫متغيرات ‪: PL/SQL‬‬ ‫‪-1‬‬

‫وتحتوي على عدة أنواع منها ‪:‬‬


‫المفردة ‪.Scalar‬‬ ‫‪-1‬‬

‫المركبة)المعقدة( ‪. Composite‬‬ ‫‪-2‬‬

‫المشار بها ) عناوين ( ‪. Reference‬‬ ‫‪-3‬‬

‫ذات الحجام الكبيرة ‪. (LOB(Large Object‬‬ ‫‪-4‬‬

‫متغيرات ليست ‪: PL/SQL‬‬ ‫‪-2‬‬

‫مثل متغيرات ‪. host , Bind :‬‬


‫فمـــــا علينــــــا من هذه النــــواع في هذا المنهج إل الفقـــــرة الولـــــى )المفـــــردة( ‪.‬‬
‫كيفية تعريف المتغيرات في لغة ‪: PL/SQL‬‬
‫يتم تعريف المتغيرات في لغة ‪ PL/SQL‬في جزء التصريح والشكل العام للتعريف هو ‪:‬‬
‫;)‪Variable_name [CONSTANT] datatype (precision‬‬
‫]قيـــــد[ )الدقة أو الطول( نوع البيانات‬ ‫اسم المتغير‬ ‫;‬
‫ملحوظة مهمة ‪:‬‬
‫يجب أن ينتهي التعريف بفاصلة منقوطة ‪.‬‬ ‫‪-1‬‬
‫اسم المتغير ونوعه إجباريان عند تعريف أي متغير ‪.‬‬ ‫‪-2‬‬
‫مثل ما قلنا أن من أنواع المتغيرات في هذه اللغة )المفردة( فما معنى المفردة ؟‬
‫المفردة المقصود منها هنا ‪ :‬أن ل يحتوي قيمة المتغير سوى قيمة واحدة فقط ‪ .‬مثل ‪:‬‬
‫البيانات الرقمية ‪. Number :‬‬ ‫‪-1‬‬

‫البيانات النصية ‪. Char , Varchar2 :‬‬ ‫‪-2‬‬

‫البيانات البولية ‪. Boolean :‬‬ ‫‪-3‬‬

‫البيانات الزمنية )التاريخ( ‪. Date :‬‬ ‫‪-4‬‬

‫الستثناءات ‪ . Exception :‬وغيرها ‪.‬‬ ‫‪-5‬‬

‫سنأخذ كل أنواع البيانات السابقة وكيفية التعريف بالتفصيل ‪.‬‬


‫‪18‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫تعريف المتغيرات الرقمية ‪:‬‬


‫يمكن أن تتضمن البيانات الرقمية وسيطين اثنين ‪ :‬الدقة )الطول الكامل للقيمة( و القيمة العشرية )عدد‬
‫الرقام الممكن وضعها إلى يسار أو يمين الفاصلة العشرية ‪.‬‬
‫البيانات الرقمية تنقسم إلى قسمين ‪:‬‬
‫البيانات الرقمية الصحيحة ويمكن تعريفه بالشكل التالي ‪:‬‬ ‫‪-1‬‬
‫;)‪Salary integer(3‬‬
‫البيانات الرقمية ذات الفاصلة العشرية ويمكن تعريفه بالشكل التالي‪:‬‬ ‫‪-2‬‬
‫;)‪age number(3‬‬ ‫فهذا المتغير قيمته عددا دون تحديد القيمة العشرية ويمكن أن تحتوي هذه القيمة ثلث أرقام‬
‫عشرية وثلث أرقام عشرية إلى اليسار ‪ ،‬بحيث ل يتجاوز الطول العظمي أكثر من ثلثة‬
‫مواضع ‪.‬‬

‫;)‪summary number(3,2‬‬ ‫فهذا المتغير طوله ‪ 3‬منها عددان إلى اليمين بعد الفاصلة العشرية‬

‫ملحوظة ‪:‬‬
‫* يتم إعطاء قيمة افتراضية للدقة مقدارها ‪. 38‬‬

‫تعريف المتغيرات النصية ‪:‬‬


‫يمكن تعريف البيانات النصية بشكل عادي ‪ ،‬ويتكون البيانات النصية من نمطين ‪:‬‬
‫‪ . CHAR 2- VARCHAR2‬والشكل العام لتعريف البيانات النصية ‪:‬‬ ‫‪-1‬‬

‫;)‪Job char(3‬‬
‫;)‪Name varchar2(30‬‬
‫;)(‪X char‬‬
‫ملحوظة ‪:‬‬
‫تحتوي التعاريف من النوع ‪ char‬فراغات في المواضع غير المشغولة ‪.‬‬ ‫‪-1‬‬

‫ل يمكن اعتبار الفراغات والقيم الفارغة نفس الشيء وحتى ل يمكن إجراء أي مقارنة بينهما ‪.‬‬ ‫‪-2‬‬

‫يعتبر الطول الفتراضي عندما ل يتم تحديد الطول لنمط البيانات ‪ char‬هو ‪ ، 1‬والطول‬ ‫‪-3‬‬

‫العظمي هو ‪.32767‬‬
‫‪19‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫يجب تحديد الطول عند تعريف متغير لنمط البيانات ‪ ، varchar2‬والطول العظمي هو‬ ‫‪-4‬‬

‫‪. 32767‬‬
‫تسمح اللغة بتعريف متغيرات من النماط ‪ char‬و ‪ varchar2‬بأطوال أعظمية أكبر ‪.‬‬ ‫‪-5‬‬

‫تعريف المتغيرات من أنواع أخرى ‪:‬‬


‫‪ : Boolean‬يستخدم لتسجيل حالة ما ‪ ،‬ويمكن أن يأخذ القيمة ‪ True‬أو ‪ False‬أو ‪. Null‬‬ ‫‪-1‬‬

‫‪:‬مثل ; ‪Yes Boolean‬‬


‫‪ : Date‬يستخدم لتسجيل قيم التاريخ ‪.‬‬ ‫‪-2‬‬

‫; ‪s_day date‬‬ ‫‪:‬مثل‬


‫‪ : Exception‬يستخدم لتعريف استثناء مخصص أو مقبض للخطأ ‪.‬‬ ‫‪-3‬‬

‫‪:‬مثل ;‪e_error exception‬‬


‫تعاريف القيود ‪:‬‬
‫يمكن وضع القيود على المتغيرات معّرفة في كتلة الترميز ‪ ،‬وُيعرف القيد بأنه شرط يتم وضعه على‬
‫المتغير‪ .‬ويوجد نوعان شائعان من القيود وهما ‪:‬‬
‫‪ : CONSTANT‬وهذا القيد يتأكد من أن القيمة لم تتغير بعد نسب قيمة أولية للمتغير ‪ .‬فإذا‬ ‫‪-1‬‬

‫حاولت تعليمة ما تغيير القيمة ‪ ،‬سيحدث خطأ ‪.‬‬


‫‪ : NOT NULL‬هذا القيد يتأكد من أن المتغير يحتوى على دائمًا على قيمة ‪ ،‬فإذا‬ ‫‪-2‬‬

‫حاولت تعليمة ما نسب قيمة فارغة إلى المتغير ‪ ،‬سيحدث خطأ ‪.‬‬
‫نسب قيم للمتغيرات ‪:‬‬
‫توجد طريقتان لنسب القيم للمتغيرات في لغة ‪: PL/SQL‬‬
‫معامل النسب )‪ (=:‬مثل ‪:‬‬ ‫‪-1‬‬

‫;‪Salary number := 15‬‬


‫الكلمة المفتاحية )‪ (INTO‬وتستخدم في تعليمة )‪ (SELECT‬و )‪ ، (FETCH‬وسيأتي‬ ‫‪-2‬‬

‫شرحه بالتفصيل لحقًا ‪.‬‬


‫‪20‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫تعريف متغيرات من نوع تسجيلة ‪ PL/SQL‬ومتغيرات المجموعات ‪:‬‬


‫ميزة أضيفت في لغة ‪ PL/SQL‬وهي تعريف متغيرات من نوع تسجيلة ومتغيرات المجموعات‬
‫بمعنى ‪ :‬يمكن تعريف متغير على أساس تعريف عمود أو صف بأكمله في جدول بقاعدة البيانات أو متغير‬
‫سبق تعريفه ‪ ،‬فالمتغير الجديد يأخذ نفس نوع بيانات عمود جدول في قاعدة البيانات ‪ ،‬وبذلك تتيح قدر‬
‫كبير من المرونة في تعريف المتغيرات ‪ ،‬وأيضًا يوفر الكثير من الوقت للمبرمج ‪ ،‬وأيضًا اختصار‬
‫البرنامج ‪.‬‬
‫الفوائد الهامة من هذه الميزة ‪:‬‬
‫يستطيع المطّور أن يعرف بشكل آلي متغير بنفس مواصفات بيانات عمود جدول أو‬ ‫‪-1‬‬

‫متغير من نوع مؤشر ‪ ،‬وبدون معرفة المواصفات لبيانات العمود أو المؤشر ‪.‬‬
‫يستطيع المطّور إعداد المتغيرات لمؤشر ما أو تسجيلة جدول بتعليمة واحدة ‪ .‬وستمتلك‬ ‫‪-2‬‬
‫المتغيرات نفس المواصفات للجدول أو متغيرات المؤشر ‪.‬‬
‫* الخاصية أو الداة )‪: (TYPE%‬‬
‫تعتبر الداة )‪ (TYPE%‬أول أداة لتعريف متغير مجموعة ‪ ،‬والتي تسمح بتعريف متغير بنفس‬
‫مواصفات عمود جدول بقاعدة البيانات ‪ ،‬والشكل العام للتعريف بهذه الداة ‪:‬‬
‫; ‪VARIABLE_NAME TABLE_CURSOR_NAME.COLUMN_NAME%TYPE‬‬
‫اسم العمود‬ ‫; ‪%TYPE‬اسم المتغير اسم الجدول أو المؤشر‬
‫ل على ذلك ‪:‬‬
‫وفي ما يلي نأخذ مثا ً‬
‫كتلة برمجية لعرض اسم الموظف وراتبه من جدول الموظفين )‪ ، (EMP‬بحيث يكون رقم الموظف‬
‫يساوي ‪. 7782‬‬
‫‪21‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫دعنا الن نشرح المثال السابق بالتفصيل ‪:‬‬


‫السطر الول ‪ :‬كلمة مفتاحية )‪ (Declare‬تحدد جزء التصريح والتعريف ‪.‬‬
‫السطر الثاني ‪ :‬تعريف متغير واسمه )‪(name‬ونوع بياناته نفس نوع بيانات عمود)‪(ename‬من جدول)‬
‫‪.(emp‬‬
‫السطر الثالث ‪ :‬تعريف متغير واسمه )‪(salary‬ونوع بياناته نفس نوع بيانات عمود)‪(sal‬من جدول)‪.(emp‬‬
‫السطر الرابع ‪ :‬كلمة مفتاحية )‪ (Begin‬تحدد جزء التنفيذ ‪.‬‬
‫السطر الخامس ‪ :‬جملة استعلم )‪ (select‬يسترجع السم والراتب )‪ (ename‬و)‪. (sal‬‬
‫السطر السادس ‪ :‬كلمة مفتاحية )‪ (into‬لسناد قيم للمتغيرات التي تم تعريفها في جزء التصريح )‪ (ename‬و‬
‫)‪. (salary‬‬
‫السطر السابع ‪ :‬أشرنا إلى استرجاع السجل يكون من جدول الموظفين )‪. (emp‬‬
‫السطر الثامن ‪ :‬جملة الشرط لسترجاع السجل بحيث يكون رقم الموظف )‪ (empno‬يساوي )‪. (7782‬‬
‫السطر التاسع ‪ :‬جملة الطباعة بحيث يطبع اسم الموظف وراتبه المسترجع من جملة الستعلم السابقة ‪.‬‬
‫السطر العاشر ‪ :‬كلمة مفتاحية )‪ (End‬لنهاء البرنامج أو كتلة الترميز وتنتهي بفاصلة منقوطة ‪.‬‬
‫السطر الحادي عشر ‪ :‬يدل الرمز )‪ (/‬على تنفيذ البرنامج أو كتلة الترميز السابقة ‪.‬‬
‫ملحوظة ‪:‬‬
‫السطر التاسع ‪ :‬نرى الرمز )||( ‪ ،‬ويستخدم لطباعة قيمة أكثر من متغير أو جملة في نفس‬ ‫‪.1‬‬

‫جملة الطباعة ‪.‬‬


‫لطباعة نص يجب وضعه بين علمتي تنصيص مفردة ‪.‬‬ ‫‪.2‬‬
‫‪22‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫* الخاصية أو الداة )‪: (ROWTYPE%‬‬


‫الداة )( ‪ ،‬وهي ثاني أداة لتعريف متغير مجموعة ‪ ،‬وتستخدم لتأسيس مصفوفة من المتغيرات مبنية‬
‫على العمدة الموجودة في مؤشر ما أو جدول ما ‪ .‬والشكل العام للتعريف بهذه الداة ‪:‬‬
‫; ‪ARRAY_NAME TABLE/CURSOR_NAME%ROWTYPE‬‬
‫اسم الجدول أو المؤشر‬ ‫; ‪%ROWTYPE‬اسم المتغير‬
‫ل على ذلك ‪:‬‬
‫وفي ما يلي نأخذ مثا ً‬
‫كتلة برمجية لعرض اسم الموظف وراتبه ووظيفته من جدول الموظفين )‪ ، (EMP‬بحيث يكون رقم‬
‫الموظف يساوي ‪ ). 7782‬باستخدام الداة ‪: (ROWTYPE%‬‬

‫شرح البرنامج السابق ‪:‬‬


‫هو نفس البرنامج الذي كتبنا في الداة )‪ (TYPE%‬ولكن يختلف هنا في بعض الفقرات عن البرنامج‬
‫السابق من حيث الكتابة ‪:‬‬
‫تم تعريف متغير )‪ (x‬تأخذ نفس نوع أعمدة جدول الموظفين )‪. (emp‬‬ ‫‪-1‬‬

‫جملة الطباعة في السطر الثامن يختلف عن السابق فعند طباعة قيمة متغير يجب وضع اسم‬ ‫‪-2‬‬

‫ل‪:‬‬
‫المتغير ثم نقطة ثم اسم العمود في الجدول كالشكل التالي مث ً‬
‫;) ‪DBMS_OUTPUT.PUT_LINE ('Name: ' || x.ename‬‬
‫‪23‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫ملحوظة ‪:‬‬
‫ل واحدًا فقط ‪ ،‬وإذا استرجع أكثر من سجل سيحدث‬
‫كل ما سبق تسمى المؤشرات الضمنية ‪ ،‬وتسترجع سج ً‬
‫خطأ ‪.‬‬

‫أمثلة الفصل الثاني ‪:‬‬


‫كتلة برمجية تطبع نص وقيمة المتغير )‪: X) = 1500‬‬ ‫‪-1‬‬

‫كتلة برمجية تسترجع اسم الموظف وراتبه واسم القسم الذي يشتغل فيه وطباعته ‪ ،‬بحيث يكون‬ ‫‪-2‬‬

‫رقم الموظف يساوي )‪ : (7782‬باستخدام الداة )‪: (TYPE%‬‬

‫كتلة برمجية يتم فيه طباعة اسم الموظف ووظيفته الذي يحمل الرقم )‪ . (7782‬ولكن باستخدام‬ ‫‪-3‬‬

‫الداة )‪: (ROWTYPE%‬‬


‫‪24‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫تمارين الفصل الثاني ‪:‬‬


‫السؤال الول ‪:‬‬
‫أجب عما يأتي ‪:‬‬
‫ماذا تعني كلمة المتغير ؟‬ ‫‪-1‬‬

‫ما هي أهمية المتغيرات ؟‬ ‫‪-2‬‬


‫أ‪-‬‬
‫ب‪-‬‬

‫أذكر شروط تسمية المتغيرات ؟‬ ‫‪-3‬‬


‫أ‪-‬‬
‫ب‪-‬‬
‫ج‪-‬‬
‫د‪-‬‬
‫هـ ‪-‬‬
‫و‪-‬‬

‫‪ - 4‬ما هي أنواع المتغيرات في لغة ‪ PL/SQL‬؟‬


‫أ‪-‬‬
‫ب‪-‬‬
‫‪25‬‬ ‫كتاب تصميم قواعد البيانات ‪PL-SQL‬‬

‫السؤال الثاني ‪:‬‬


‫امل الفراغات التالية ‪:‬‬
‫‪.‬‬ ‫من أنماط البيانات النصية ‪ char‬و ‪..........................‬‬ ‫‪.1‬‬

‫‪.‬‬ ‫يمكن تعريف المتغيرات في جزء ‪...........................‬‬ ‫‪.2‬‬


‫تستخدم الداة )‪(ROWTYPE%‬‬ ‫‪.3‬‬

‫لـــ ‪. ..........................................................................‬‬
‫القيمة الفتراضية من نمط البيانات )‪ (CHAR‬عندما ل يتم تحديد الطول‬ ‫‪.4‬‬

‫هو ‪. ................‬‬
‫‪ ..........‬الطول الكامل للقيمة ‪ ،‬و ‪ ........................‬عدد الرقام الممكن وضعها إلى يمين‬ ‫‪.5‬‬
‫أو يسار الفاصلة العشرية ‪.‬‬
‫‪ .......................‬يستخدم للبيانات البولية أو المنطقية ‪.‬‬ ‫‪.6‬‬
‫‪ DATE‬يستخدم لــ ‪. .......................................‬‬ ‫‪.7‬‬

‫السؤال الثالث ‪:‬‬


‫اكتب كتلة برمجية لستعراض تاريخ التعيين للموظف الذي اسمه )‪ (KING‬؟‬ ‫‪-1‬‬

‫اكتب كتلة برمجية لحساب عدد الموظفين في جدول الموظفين )‪ (EMP‬؟‬ ‫‪-2‬‬

‫اكتب كتلة برمجية تقوم فيه تعريف متغيرين من النوع الرقمي وتنسب قيمة للول )‪(50‬‬ ‫‪-3‬‬

‫والثاني )‪ ، (30‬ثم تقوم بجمع العددين وطباعة الناتج ؟‬

You might also like