كتلة PL/SQL: البنية، بناء الجملة، ومثال مجهول

⚡ ملخص ذكي

كتلة PL/SQL هي الوحدة الأساسية التي تجمع تعليمات PL/SQL وSQL بحيث يتم تنفيذها معًا بدلاً من تنفيذها سطرًا بسطر. تحتوي كل كتلة على قسم للإعلان، وقسم للتنفيذ، وقسم لمعالجة الاستثناءات، وتكون الكتل إما مجهولة أو مُسماة.

  • 🧱 الفكرة الأساسية: Code يتم تجميعها في كتلة تعمل كوحدة واحدة، حيث تمزج بين المنطق الإجرائي ولغة SQL.
  • 📝 قسم الإقرار: اختياري؛ يُعلن عن المتغيرات والمؤشرات والاستثناءات والبرامج الفرعية المستخدمة في الكتلة.
  • ▶ ️ قسم التنفيذ: إلزامي؛ يبدأ بـ BEGIN ويحتوي على عبارة تنفيذية واحدة على الأقل.
  • 🛡️ قسم الاستثناءات: اختياري؛ يبدأ بـ EXCEPTION ويتعامل مع أخطاء وقت التشغيل.
  • 🏷️ نوعين: الكتل المجهولة هي كتل غير مسماة ويتم تشغيلها مرة واحدة؛ أما الكتل المسماة فتُخزن ككائنات قاعدة بيانات.
  • 🔁 الكتل المسماة: الإجراءات والوظائف عبارة عن كتل مُسماة يمكن استدعاؤها بشكل متكرر.
  • ⛔ المنهي: يغلق الأمر END الكتلة، ويرسلها الخط المائل إلى المترجم.

بنية وبنية كتلة PL/SQL

ما هي كتلة PL/SQL؟

في لغة PL/SQL، لا يتم تنفيذ التعليمات البرمجية في شكل سطر واحد؛ بل يتم تنفيذها دائمًا بواسطة مجموعاتping يُقسّم الكود إلى عنصر واحد يُسمى كتلة. في هذا الدرس، ستتعرف على هذه الكتل.

تحتوي الكتل على تعليمات PL/SQL وتعليمات SQL. يتم تنفيذ جميع هذه التعليمات كوحدة واحدة بدلاً من تنفيذها واحدة تلو الأخرى.

هيكل بلوك

تتميز كتل PL/SQL ببنية محددة مسبقًا يتم فيها تجميع التعليمات البرمجية. فيما يلي الأقسام المختلفة لكتلة PL/SQL:

  1. قسم التصريح
  2. قسم التنفيذ
  3. قسم معالجة الاستثناءات

توضح الصورة أدناه أقسام كتلة PL/SQL المختلفة وترتيبها.

أقسام وترتيب كتل PL/SQL

قسم الإعلان

هذا هو القسم الأول من كتلة PL/SQL، وهو اختياري. في هذا القسم، تُعلن المتغيرات والمؤشرات والاستثناءات والبرامج الفرعية وتعليمات pragma والمجموعات اللازمة للكتلة. إليك بعض الخصائص الأخرى لهذا الجزء:

  • هذا القسم اختياري ويمكن تخطيه إذا لم تكن هناك حاجة إلى تقديم أي إقرارات.
  • ينبغي أن يكون هذا هو القسم الأول في كتلة PL/SQL، إن وجدت.
  • يبدأ الأمر بالكلمة المفتاحية 'DECLARE' للمشغلات والكتل المجهولة. أما بالنسبة للبرامج الفرعية الأخرى، فلا توجد هذه الكلمة المفتاحية؛ بل يشير الجزء الذي يلي اسم البرنامج الفرعي إلى قسم التصريح.
  • يجب أن يتبع ذلك دائمًا قسم التنفيذ.

قسم التنفيذ

يُعد جزء التنفيذ هو الجزء الرئيسي والضروري الذي يقوم فعلياً بتنفيذ الكود المكتوب بداخله. PL / SQL يتوقع هذا الجزء عبارات قابلة للتنفيذ، ولا يمكن أن يكون فارغًا، ويجب أن يحتوي على سطر تنفيذي واحد على الأقل. فيما يلي بعض الخصائص الأخرى لهذا الجزء:

  • يمكن أن يحتوي على كل من كود PL/SQL وكود SQL.
  • يمكن أن يحتوي على كتلة واحدة أو عدة كتل بداخله ككتل متداخلة.
  • يبدأ الأمر بالكلمة المفتاحية 'BEGIN'.
  • يجب أن يتبعه إما كلمة "نهاية" أو قسم معالجة الاستثناءات، إن وجد.

قسم معالجة الاستثناءات

الاستثناءات هي أخطاء لا مفر منها تحدث أثناء التشغيل، وللتعامل معها Oracle يُوفّر هذا القسم قسمًا لمعالجة الاستثناءات في كتل. ويمكن أن يحتوي هذا القسم أيضًا على عبارات PL/SQL، وهو اختياري.

  • هذا هو القسم الذي يتم فيه التعامل مع الاستثناء الذي تم رفعه في كتلة التنفيذ.
  • إنه الجزء الأخير من كتلة PL/SQL.
  • لا يمكن مطلقًا عودة التحكم من هذا القسم إلى كتلة التنفيذ.
  • يبدأ الأمر بالكلمة المفتاحية "استثناء".
  • يجب أن يتبعها دائماً الكلمة المفتاحية 'END'.

تشير الكلمة المفتاحية 'END' إلى نهاية كتلة PL/SQL.

بناء جملة كتلة PL/SQL

يوجد أدناه بناء جملة بنية كتلة PL/SQL.

بناء جملة كتلة PL/SQL

DECLARE --optional
<declarations>

BEGIN --mandatory
<executable statements. At least one executable statement is mandatory>

EXCEPTION --optional
<exception handles>

END; --mandatory
/

ملاحظة: يجب أن يتبع الكتلة دائمًا الرمز '/'، والذي يرسل معلومات إلى المترجم حول نهاية الكتلة.

أنواع كتل PL/SQL

تتكون كتل PL/SQL بشكل أساسي من نوعين:

  1. كتل مجهولة
  2. الكتل المسماة

تتم مقارنة الاثنين بإيجاز أدناه قبل وصف كل منهما.

البعد كتلة مجهولة كتلة مسماة
له اسم لا نعم
مخزنة في قاعدة البيانات لا نعم، ككائن
ابدا ب أعلن أو ابدأ خلق
قابلة لإعادة الاستخدام نفس الجلسة فقط يمكن الاتصال في أي وقت

كتل مجهولة المصدر

الكتل المجهولة هي كتل PL/SQL لا تحمل أي اسم. يجب إنشاؤها واستخدامها في نفس الجلسة لأنها لا تُخزّن على الخادم ككائنات قاعدة بيانات.

بما أنها لا تُخزَّن في قاعدة البيانات، فلا تحتاج إلى خطوة تجميع منفصلة. تُكتب وتُنفَّذ مباشرةً، ويتم التجميع والتنفيذ في عملية واحدة. بعض الخصائص الأخرى:

  • لا تحتوي هذه الكتل على اسم مرجعي.
  • تبدأ بالكلمة المفتاحية "DECLARE" أو "BEGIN".
  • ولأنها لا تحتوي على اسم مرجعي، فلا يمكن تخزينها لاستخدامها لاحقًا ويجب إنشاؤها وتنفيذها في نفس الجلسة.
  • يمكنهم استدعاء كتل أخرى مسماة، لكن استدعاء كتلة مجهولة غير ممكن، لأنه ليس لها مرجع.
  • يمكن أن تحتوي على كتلة متداخلة مسماة أو مجهولة، ويمكن أيضًا أن تكون متداخلة داخل أي كتلة.
  • يمكن أن تحتوي على الأقسام الثلاثة جميعها، حيث يكون قسم التنفيذ إلزاميًا والقسمان الآخران اختياريان.

الكتل المسماة

تتميز الكتل المسماة باسم محدد وفريد. تُخزن هذه الكتل ككائنات قاعدة بيانات على الخادم، لذا يمكن الرجوع إليها أو استخدامها طالما أنها موجودة. تتم عملية تجميع الكتل المسماة بشكل منفصل عند إنشائها ككائنات قاعدة بيانات. بعض الخصائص الأخرى:

  • يمكن استدعاء هذه الكتل من كتل أخرى.
  • بنية الكتلة مماثلة لبنية الكتلة المجهولة، باستثناء أنها لا تبدأ أبدًا بـ 'DECLARE'. بدلاً من ذلك، تبدأ بـ 'CREATE'، والتي تُوجه المُترجم لإنشائها ككائن قاعدة بيانات.
  • يمكن أن تتداخل هذه الكتل داخل كتل أخرى، ويمكن أن تحتوي أيضًا على كتل متداخلة.
  • الكتل المسماة هي في الأساس نوعان:
  1. العملية
  2. الوظيفة

يمكنك معرفة المزيد عن هذه الكتل المسماة في الدليل الخاص بـ الإجراءات والوظائف.

الأسئلة الشائعة

يقتصر الأمر على قسم التنفيذ، الذي يبدأ بـ BEGIN وينتهي بـ END. أما قسمي الإعلان ومعالجة الاستثناءات فهما اختياريان ويمكن حذفهما إذا لم يكونا ضروريين.

الكتلة المجهولة ليس لها اسم، ولا يتم تخزينها، وتُنفذ في نفس الجلسة. أما الكتلة المسماة، مثل الإجراء أو الدالة، فتُخزن ككائن في قاعدة البيانات ويمكن استدعاؤها بشكل متكرر.

في أدوات مثل SQL*Plus، تشير الشرطة المائلة في سطر منفصل إلى أن الكتلة قد اكتملت ويجب تنفيذها. وبدونها، تستمر الأداة في انتظار المزيد من المدخلات.

نعم. يمكن للذكاء الاصطناعي تضمين المنطق في رأس CREATE PROCEDURE، وإضافة المعاملات، ونقل التصريحات إلى مكانها الصحيح. اختبر النتيجة، لأن النسخة المخزنة قد تحتاج إلى أوضاع معاملات صريحة ومعالجة الأخطاء.

نعم. قسمي التصريح والاستثناء خياران مستقلان. يمكن أن تبدأ الكتلة من BEGIN، وتتخطى التصريحات، ومع ذلك تتضمن قسم EXCEPTION قبل END لاكتشاف أخطاء وقت التشغيل.

تلخيص هذه التدوينة بـ: