تعريف المتغيرات وأهميتها واستخداماتها وأنواع المتغيرات في لغة PL/SQL؟ ما هو الفرق بين المتغيرات والثوابت؟ أنواع البيانات المتاحة في أوراكل؟
عزيزي الزائر مرحبا بك إلى موقع ” الــتــرتيــــــــــب ‟ حيث نقدم لكم هنا شرح مفصل عن اوراكل (قواعد البيانات) حيث تعتبر اللغة PL/SQL هي لغة البرمجة في نظام أوراكل ، وهي أداة برمجية قوية، وكلمة PL/SQL اختصاراً لـ (Procedure Language/Structure Query Language )، وتستخدم هذه اللغة لتجهيز نظام Oracle عن طريقة معالجة التسجيلات ، وتستخدم أيضاً في أدوات التطوير المنتجة من قبل شركة Oracle، وهي تعتبر أساس برنامج بناء النماذج Oracle Forms و Oracle Reports. وتستخدم هذه اللغة أيضاً لتعريف نموذج ما، والقيام ببعض الحسابات الخاصة في تقرير ما، ومن أجل التسجيلات مزايا لغة PL/SQL. والآن نقدم لكم هنا شرح مفصل للإجابة عن السؤال التالــــــــــي: تعريف المتغيرات وأهميتها واستخداماتها وأنواع المتغيرات في لغة PL/SQL؟ ما هو الفرق بين المتغيرات والثوابت؟ أنواع البيانات المتاحة في أوراكل؟
إن المتغير هو موقع تخزين - من أجل حفظ قيمة - يمكن أن يتم إسناد قيمة إليه ، وسمي متغبر لأنه يمكن أن تتغير قيمته أثناء تنفيذ البرنامج .
- ثانياً: أهمية المتغيرات :
1. حجز مكان في الذاكرة للمتغير .
2. إعلام المترجم بنوع البيانات التي يمكن أن تخزن في المتغير .
- ثالثاً: استخدامات المتغيرات :
1. تخزين مؤقت للبيانات .
2. التعامل مع قيم مخزنة .
3. إعادة استخدام البيانات نتيجة تغيرات داخل وأثناء البرنامج .
4. الإختصار وسهولة التعديل والصيانة وذلك من استخدام (%type) و (%rowtype) سيأتي شرحها لاحقاً ، و من خلالهما يمكن تعريف متغير حسب نوع عمود أو صف في قاعدة البيانات مما يتيح قدر كبير من المرونة دون التقيد بنوع معين من البيانات.
- رابعاً: شروط تسمية المتغيرات :
1. اسم المتغير يجب أن يبدأ بحرف.
2. يمكن أن يحتوي اسم المتغير على حروف وأعداد أو شرطة سفلية أو الحرف $ .
3. لا يحتوي اسم المتغير على رموز خاصة .
4. لا يحتوي اسم المتغير على مسافات .
5. لا يكون اسم المتغير ضمن الأسماء المحجوزة في اللغة مثل Declare, for, if ... الخ.
6. لغة PL/SQL لا تفرق بين الحروف الكبيرة والصغير فمثلاً x لا يختلف عن X .
7. يفضل أن يكون اسم المتغير ذو معنى .
- خامساً: أنواع المتغيرات في لغة PL/SQL :
تنقسم المتغيرات إلى قسمين أساسين:
أحدهما: متغيرات PL/SQL : وتحتوي على عدة أنواع منها :
١. المفردة Scalar.
٢. المركبة(المعقدة) Composite .
٣. المشار بها ( عناوين ) Reference .
٤. ذات الأحجام الكبيرة LOB (Large Object) .
والآخـــــر: متغيرات ليست PL/SQL : مثل متغيرات : host , Bind.
- سادساّ: كيفية تعريف المتغيرات في لغة PL/SQL :
يتم تعريف المتغيرات في لغة PL/SQL في جزء التصريح والشكل العام للتعريف هو :
Variable_name [CONSTANT] datatype) precision);
اسم المتغير [قيـــــد] (الدقة أو الطول) نوع البيانات;
المفردة المقصود منها هنا: أن لا يحتوي قيمة المتغير سوى قيمة واحدة فقط. مثل :
أ. البيانات الرقمية : Number .
ب. البيانات النصية : Char , Varchar2 .
ج. البيانات البوليانية : Boolean .
د. البيانات الزمنية (التاريخ) : Date .
هـ. الاستثناءات : Exception . وغيرها.
① تعريف المتغيرات الرقمية :
يمكن أن تتضمن البيانات الرقمية وسيطين اثنين : الدقة (الطول الكامل للقيمة) و القيمة العشرية (عدد الأرقام الممكن وضعها إلى يسار أو يمين الفاصلة العشرية .
Salary integer(3);
summary number(3,2);
② تعريف المتغيرات النصية :
يمكن تعريف البيانات النصية بشكل عادي، ويتكون البيانات النصية من نمطين :
CHAR 2- VARCHAR2 . والشكل العام لتعريف البيانات النصية :
Job char(3);
Name varchar2(30);
- سابعاً: أنواع البيانات المتاحة في أوراكل DATATYPES :-
أ. VARCHAR2(size): نوع البيانات متحول حرفي متغير الطول يجب أن يكون size طول السلسلة بين حرف واحد 1على الأقل و4000 محرف على الأكثر.
ب. CHAR(size): نوع البيانات متحول حرفي ثابت الطول يجب أن يكون size طول السلسلة بين حرف واحد 1على الأقل و2000 محرف على الأكثر.
ج. NUMBER(p , s): متحول رقمي متغير الطول له الدقة P والمقياس S حيث Pأكبر طول لرقم قبل الفاصلة العشرية وS أكبر طول لرقم بعد الفاصلة العشرية من جهة اليمين يأخذ p مجال القيم بين 1 إلى 38 أما S فيأخذ مجال القيم بين-84 وبين 127.
د. DATE: نوع البيانات تاريخ ووقت بين January 1. 4712B.C. وبين December 31.9999A.D.
هـ. LONG: نمط رقمي متغير الطول من البيانات يأخذ يصل حجمه إلى حتى 2 جيجا بايت.
و. CLOB: متحول حرفي يصل حجمه إلى حتى 4 جيجا بايت.
ق. ROW: متحول ثنائي يأخذ طول محدد size يمكن جعله حتى 2000 كحد أقصى.
ك. LONG ROW: متحول ثنائي متغير الطول يصل حجمه حتى 2 جيجا بايت.
ل. BLOB: بيانات ثنائية يصل حجمها حتى 4 جيجا بايت.
م. BFILE: بيانات ثنائية تخزن ضمن ملف خارجي يصل حجمها حتى 4 جيجا بايت.
يمكن وضع القيود على المتغيرات معرّفة في كتلة الترميز ، ويُعرف القيد بأنه شرط يتم وضعه على المتغير. ويوجد نوعان شائعان من القيود وهما :
أ. CONSTANT : وهذا القيد يتأكد من أن القيمة لم تتغير بعد نسب قيمة أولية للمتغير . فإذا حاولت تعليمة ما تغيير القيمة ، سيحدث خطأ .
ب. NOT NULL : هذا القيد يتأكد من أن المتغير يحتوى على دائماً على قيمة ، فإذا حاولت تعليمة ما نسب قيمة فارغة إلى المتغير ، سيحدث خطأ.
ثامناً: كيفية اسناد قيم للمتغيرات:
توجد طريقتان لنسب القيم للمتغيرات في لغة PL/SQL :
معامل النسب (:=) مثل :
Salary number := 15;
الكلمة المفتاحية (INTO) وتستخدم في تعليمة (SELECT) و (FETCH) ، وسيأتي شرحه بالتفصيل لاحقاً .
يمكن وضع القيود على المتغيرات معرّفة في كتلة الترميز ، ويُعرف القيد بأنه شرط يتم وضعه على المتغير. ويوجد نوعان شائعان من القيود وهما :
- أولهما. CONSTANT : وهذا القيد يتأكد من أن القيمة لم تتغير بعد نسب قيمة أولية للمتغير . فإذا حاولت تعليمة ما تغيير القيمة ، سيحدث خطأ .
- والآخر. NOT NULL : هذا القيد يتأكد من أن المتغير يحتوى على دائماً على قيمة ، فإذا حاولت تعليمة ما نسب قيمة فارغة إلى المتغير ، سيحدث خطأ .
توجد طريقتان لنسب القيم للمتغيرات في لغة PL/SQL :
معامل النسب (:=) مثل :
Salary number := 15;
الكلمة المفتاحية (INTO) وتستخدم في تعليمة (SELECT) و (FETCH) ، وسيأتي شرحه بالتفصيل لاحقاً .
- تعريف متغيرات من نوع تسجيلة PL/SQL ومتغيرات المجموعات :
ميزة أضيفت في لغة PL/SQL وهي تعريف متغيرات من نوع تسجيلة ومتغيرات المجموعات بمعنى : يمكن تعريف متغير على أساس تعريف عمود أو صف بأكمله في جدول بقاعدة البيانات أو متغير سبق تعريفه ، فالمتغير الجديد يأخذ نفس نوع بيانات عمود جدول في قاعدة البيانات ، وبذلك تتيح قدر كبير من المرونة في تعريف المتغيرات ، وأيضاً يوفر الكثير من الوقت للمبرمج ، وأيضاً اختصار البرنامج .
- الفوائد الهامة من هذه الميزة :
يستطيع المطوّر أن يعرف بشكل آلي متغير بنفس مواصفات بيانات عمود جدول أو متغير من نوع مؤشر ، وبدون معرفة المواصفات لبيانات العمود أو المؤشر .
يستطيع المطوّر إعداد المتغيرات لمؤشر ما أو تسجيلة جدول بتعليمة واحدة . وستمتلك المتغيرات نفس المواصفات للجدول أو متغيرات المؤشر .
- * الخاصية أو الأداة (%TYPE) :
تعتبر الأداة (%TYPE) أول أداة لتعريف متغير مجموعة ، والتي تسمح بتعريف متغير بنفس مواصفات عمود جدول بقاعدة البيانات ، والشكل العام للتعريف بهذه الأداة :
VARIABLE_NAME TABLE_CURSOR_NAME.COLUMN_NAME%TYPE ;
اسم المتغير اسم الجدول أو المؤشر اسم العمود%TYPE ;
- وفي ما يلي نأخذ مثالاً على ذلك :
كتلة برمجية لعرض اسم الموظف وراتبه من جدول الموظفين (EMP) ، بحيث يكون رقم الموظف يساوي 7782.
السطر الأول : كلمة مفتاحية (Declare) تحدد جزء التصريح والتعريف .
السطر الثاني : تعريف متغير واسمه (name)ونوع بياناته نفس نوع بيانات عمود(ename)من جدول(emp).
السطر الثالث : تعريف متغير واسمه (salary)ونوع بياناته نفس نوع بيانات عمود(sal)من جدول(emp).
السطر الرابع : كلمة مفتاحية (Begin) تحدد جزء التنفيذ .
السطر الخامس : جملة استعلام (select) يسترجع الاسم والراتب (ename) و(sal) .
السطر السادس : كلمة مفتاحية (into) لإسناد قيم للمتغيرات التي تم تعريفها في جزء التصريح (ename) و (salary) .
السطر السابع : أشرنا إلى استرجاع السجل يكون من جدول الموظفين (emp) .
السطر الثامن : جملة الشرط لاسترجاع السجل بحيث يكون رقم الموظف (empno) يساوي (7782) .
السطر التاسع : جملة الطباعة بحيث يطبع اسم الموظف وراتبه المسترجع من جملة الإستعلام السابقة .
السطر العاشر : كلمة مفتاحية (End) لإنهاء البرنامج أو كتلة الترميز وتنتهي بفاصلة منقوطة .
- * الخاصية أو الأداة (%ROWTYPE) :
الأداة (%ROWTYPE) ، وهي ثاني أداة لتعريف متغير مجموعة ، وتستخدم لتأسيس مصفوفة من المتغيرات مبنية على الأعمدة الموجودة في مؤشر ما أو جدول ما . والشكل العام للتعريف بهذه الأداة :
ARRAY_NAME TABLE/CURSOR_NAME%ROWTYPE ;
اسم المتغير اسم الجدول أو المؤشر %ROWTYPE;
وفي ما يلي نأخذ مثالاً على ذلك :
كتلة برمجية لعرض اسم الموظف وراتبه ووظيفته من جدول الموظفين (EMP) ، بحيث يكون رقم الموظف يساوي 7782 .( باستخدام الأداة %ROWTYPE) :
كتلة برمجية تطبع نص وقيمة المتغير (x) = 1500
كتلة برمجية تسترجع اسم الموظف وراتبه واسم القسم الذي يشتغل فيه وطباعته ، بحيث يكون رقم الموظف يساوي (7782) : باستخدام الأداة (%type) :
كتلة برمجية يتم فيه طباعة اسم الموظف ووظيفته الذي يحمل الرقم (7782) . ولكن باستخدام الأداة (%ROWTYPE).