Oracle حلقة PL/SQL مع مثال

ما هي الحلقات؟

تسمح الحلقات بتنفيذ جزء معين من التعليمات البرمجية في البرنامج للعدد المطلوب من المرات.

في هذا البرنامج التعليمي، سنرى مفهوم الحلقة في PL/SQL وتدفق التحكم في الحلقات.

مقدمة لمفهوم الحلقات

يوفر مفهوم الحلقات الميزة التالية في الترميز.

  • إعادة استخدام الكود
  • تم تقليل حجم الكود
  • سهولة تدفق السيطرة
  • تعقيد أقل

يوضح الرسم البياني أدناه مفهوم التكرار بطريقة تصويرية

Oracle حلقة بل/SQL

في الرسم البياني أعلاه، سيتم التحقق من حالة الحلقة، وطالما أن حالة الحلقة مستوفاة، سيتم تنفيذ كتلة التنفيذ.

في كل تكرار، يجب تعديل متغير عداد الحلقة الذي يقرر فعليًا شرط الحلقة لجعل عنصر التحكم يخرج من الحلقة. في بعض الحالات، يكون متغير عداد الحلقة هذا عبارة عن عامل زيادة/نقصان لعدد محدد مسبقًا، وفي بعض الحالات، يكون عبارة عن شرط بحث يستمر في تنفيذ الكتلة حتى يلبيها.

بيانات التحكم في الحلقة

قبل تعلم مفهوم الحلقات، من الضروري معرفة بيانات التحكم في الحلقة. عبارات التحكم في الحلقة هي تلك التي تتحكم فعليًا في تدفق التنفيذ داخل الحلقة. يوجد أدناه وصف تفصيلي حول بيانات التحكم في الحلقة.

متابعة

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

خروج / خروج متى

ترسل هذه الكلمة الأساسية تعليمات إلى محرك PL/SQL مفادها أنه عندما يواجه محرك PL/SQL هذه الكلمة الأساسية، فإنه سيخرج على الفور من الحلقة الحالية. إذا واجه محرك PL/SQL الخروج في حلقة متداخلة، فسوف يخرج من الحلقة التي تم تعريفه فيها، أي في حلقات متداخلة، فإن إعطاء EXIT في الحلقة الداخلية لن يؤدي إلا إلى الخروج من التحكم من الحلقة الداخلية ولكن ليس من الحلقة الخارجية. "الخروج عندما" يتبعه تعبير يعطي نتيجة منطقية. إذا كانت النتيجة صحيحة، فسيتم إنهاء عنصر التحكم.

GOTO

سينقل هذا البيان التحكم إلى البيان المُسمى ("GOTO ؛"). يتضمن هذا القيود التالية

  • يمكن أن يتم نقل السيطرة فقط ضمن البرامج الفرعية.
  • لا يمكن إجراء نقل التحكم من جزء معالجة الاستثناء إلى جزء التنفيذ

لا ينصح باستخدام هذا البيان إلا في حالة عدم وجود بدائل أخرى، حيث أن تتبع التحكم في الكود سيكون صعبًا للغاية في البرنامج بسبب نقل التحكم من جزء إلى جزء آخر.

أنواع الحلقات في PL/SQL

PL / SQL يوفر الأنواع الثلاثة التالية من الحلقات

بيان الحلقة الأساسية

بيان الحلقة هذا هو أبسط بنية حلقة في PL/SQL. تبدأ كتلة التنفيذ بالكلمة الرئيسية "LOOP" وتنتهي بالكلمة الأساسية "END LOOP".

يجب إعطاء شرط الخروج داخل كتلة التنفيذ هذه حتى يتمكن التحكم من الخروج من الحلقة.

يحتاج إلى إعطاء الكلمة الأساسية EXIT بشكل صريح في جزء التنفيذ للخروج من الحلقة.

بيان الحلقة الأساسية

 LOOP
<execution block starts>
<EXIT condition based on developer criteria> 
<execution_block_ends>
END LOOP;

شرح بناء الجملة:

  • في بناء الجملة أعلاه، تشير الكلمة الرئيسية "LOOP" إلى بداية الحلقة و"END LOOP" تشير إلى نهاية الحلقة.
  • تحتوي كتلة التنفيذ على كافة التعليمات البرمجية التي يجب تنفيذها بما في ذلك شرط الخروج.
  • يمكن أن يحتوي جزء التنفيذ على أي بيان تنفيذ.

ملحوظة: ستكون عبارة الحلقة الأساسية التي لا تحتوي على كلمة رئيسية EXIT عبارة عن حلقة INFINITE-LOOP لن تتوقف أبدًا.

مثال 1:في هذا المثال، سنقوم بطباعة الأرقام من 1 إلى 5 باستخدام عبارة حلقة أساسية. للقيام بذلك، سنقوم بتنفيذ الكود التالي.

بيان الحلقة الأساسية

DECLARE 
a NUMBER:=1; 
BEGIN
dbms_output.put_line('Program started.');
LOOP
dbms_output.put_line(a);
a:=a+1;
EXIT WHEN a>5;
END LOOP;
dbms_output.put_line('Program completed');
END:
/

شرح الكود:

  • سطر الكود 2: الإعلان عن المتغير "a" كنوع بيانات "NUMBER" وتهيئته بالقيمة "1".
  • سطر الكود 4: طباعة عبارة "بدأ البرنامج".
  • سطر الكود 5: تشير الكلمة الأساسية "LOOP" إلى بداية الحلقة.
  • سطر الكود 6: يطبع قيمة "أ".
  • سطر الكود 7: زيادة قيمة "أ" بمقدار +1.
  • سطر الكود 8: للتحقق مما إذا كانت قيمة "a" أكبر من 5.
  • سطر الكود 9: تشير الكلمة الأساسية "END LOOP" إلى نهاية كتلة التنفيذ.
  • سيستمر تنفيذ التعليمات البرمجية من السطر 6 إلى السطر 8 حتى تصل "a" إلى القيمة 6، حيث سيرجع الشرط TRUE، وسيخرج عنصر التحكم من الحلقة.
  • سطر الكود 10: طباعة عبارة "اكتمل البرنامج"

وضع العلامات على الحلقات

في PL/SQL، يمكن تسمية الحلقات. ينبغي وضع الملصق بين "<<" و">>". إن وضع العلامات على الحلقات، خاصة في رموز الحلقة المتداخلة، سيوفر المزيد من سهولة القراءة. يمكن إعطاء التسمية في أمر EXIT للخروج من تلك الحلقة المحددة. باستخدام التسمية، يمكن التحكم بالخروج مباشرة من الحلقة الخارجية للحلقات المتداخلة من أي مكان داخل الحلقات، وذلك عن طريق إعطاء أمر الخروج متبوعًا بتسمية الحلقة الخارجية.

وضع العلامات على الحلقات

<<OUTER_LOOP>>
LOOP 
	<execution_block_starts>
	.
	<<INNER_LOOP>>
	LOOP --inner
		<execution_part>
	END LOOP;
	.
	<executi_block_ends>
END LOOP;

شرح بناء الجملة:

  • في بناء الجملة أعلاه، تحتوي الحلقة الخارجية على حلقة أخرى بداخلها.
  • ال'< >' و'< >' هي تسميات هذه الحلقات.

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

وضع العلامات على الحلقاتوضع العلامات على الحلقات

DECLARE
a NUMBER:=0;
b NUMBER;
upper-limit NUMBER :=4;
BEGIN
dbms_output.put_line(‘Program started.' ); 
«outerloop»‭	‬
LOOP 
a:=a+1;
b:=l;
«inner loop»
LOOP
EXIT outer_loop WHEN a > upper_limit;
dbms_output.put_line(a);
b:=b+l;
EXIT inner_loop WHEN b>a;
END LOOP;
END LOOP;
dbms_output.put_line('Program completed.');
END;
/

شرح الكود:

  • سطر الكود 2-3: الإعلان عن المتغير "a" و "b" كنوع بيانات "NUMBER".
  • سطر الكود 4: الإعلان عن المتغير "upper_limit" كنوع بيانات "NUMBER" بقيمة "4"
  • سطر الكود 6: طباعة عبارة "بدأ البرنامج".
  • سطر الكود 7: تمت تسمية الحلقة الخارجية باسم "outer_loop"
  • سطر الكود 9: يتم زيادة قيمة "أ" بمقدار 1.
  • سطر الكود 11: تمت تسمية الحلقة الداخلية باسم "inner_loop".
  • سطر الكود 13: شرط الخروج الذي يتحقق مما إذا كانت القيمة "a" أعلى من قيمة "upper_limit". إذا لم يكن الأمر كذلك فسوف يذهب أبعد من ذلك، وإلا فإنه يخرج من الحلقة الخارجية مباشرة.
  • سطر الكود 14: طباعة قيمة "ب".
  • سطر الكود 15: زيادة قيمة "b" بمقدار +1.
  • سطر الكود 16: شرط الخروج الذي يتحقق مما إذا كانت قيمة "b" أعلى من "a". إذا كان الأمر كذلك، فإنه سيتم الخروج من عنصر التحكم من الحلقة الداخلية.
  • سطر الكود 14: طباعة عبارة "اكتمل البرنامج"

الملخص

أنشوطة الحلقة الأساسية
معايير الخروج قم بالخروج عندما تواجه الكلمة الأساسية "EXIT" في جزء التنفيذ
الأستعمال جيد للاستخدام عندما لا يعتمد الخروج على أي شرط معين.