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

ما هو للحلقة؟

تعتبر عبارة "FOR LOOP" مناسبة بشكل أفضل عندما تريد تنفيذ تعليمات برمجية لعدد معروف من المرات بدلاً من الاعتماد على بعض الشروط الأخرى.

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

متغير الحلقة هو متغير تزايدي ذاتي، لذا لا توجد حاجة إلى عملية زيادة صريحة في هذه الحلقة. لا يلزم إعلان متغير الحلقة، لأنه يتم إعلانه ضمنيًا.

FOR <loop_variable> in <lower_limit> .. <higher_limit> 
LOOP
<execution block starts>
.
.
.
<execution_block_ends>
 END LOOP;

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

  • في بناء الجملة أعلاه، تشير الكلمة الأساسية "FOR" إلى بداية الحلقة و"END LOOP" تشير إلى نهاية الحلقة.
  • يتم تقييم متغير الحلقة في كل مرة قبل تنفيذ جزء التنفيذ.
  • تحتوي كتلة التنفيذ على كافة التعليمات البرمجية التي يجب تنفيذها. يمكن أن يحتوي جزء التنفيذ على أي بيان تنفيذ.
  • يتم الإعلان عن متغير الحلقة ضمنيًا أثناء تنفيذ الحلقة بأكملها، وسيكون نطاق متغير الحلقة هذا داخل هذه الحلقة فقط.
  • إذا خرج متغير الحلقة من النطاق، فسيخرج عنصر التحكم من الحلقة.
  • يمكن جعل الحلقة تعمل بترتيب عكسي عن طريق إضافة الكلمة الأساسية "REVERSE" قبل Lower_limit.

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

Oracle بل/SQL للحلقة

BEGIN
dbms Qutput.put linef.Prp.gram started.' );
FOR a IN 1 .. 5
LOOP
dbms_output.put_line(a);
END LOOP:
dbms_output.put_iine('Program completed.'); 
END;
/

شرح الكود:

  • سطر الكود 2: طباعة عبارة "بدأ البرنامج".
  • سطر الكود 3: تشير الكلمة الأساسية "FOR" إلى بداية الحلقة ويتم إعلان "loop_variable" "a". سيكون لها الآن القيمة التي تبدأ من 1 إلى 5
  • سطر الكود 5: يطبع قيمة "أ".
  • سطر الكود 6: تشير الكلمة الأساسية "END LOOP" إلى نهاية كتلة التنفيذ.
  • سيستمر تنفيذ التعليمات البرمجية من السطر 5 حتى يصل "a" إلى القيمة 6، حيث سيفشل الشرط وسيخرج عنصر التحكم من الحلقة.
  • سطر الكود 7: طباعة عبارة "اكتمل البرنامج"

حلقات متداخلة

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

حلقات متداخلة

LOOP -outer
<execution block starts>
LOOP — inner
<execution_part> 
END LOOP; 
<execution_block_ends> 
END LOOP;

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

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

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

حلقات متداخلة

حلقات متداخلة

DECLARE 
b NUMBER;
BEGIN
dbms output put line(‘Program started' );
FOR a IN 1..3 
LOOP
b:=1;
WHILE (a>=b)
LOOP
dbms output put line(a);
b:=b+1;
END LOOP;‭	
END LOOP;‭	‬
dbms_output.put_line('Program completed' );
END;
/

شرح الكود:

  • سطر الكود 2: الإعلان عن المتغير "b" كنوع بيانات "NUMBER".
  • سطر الكود 4: طباعة عبارة "بدأ البرنامج".
  • سطر الكود 5: تشير الكلمة الأساسية "FOR" إلى بداية الحلقة ويتم إعلان "loop_variable" "a". سيكون لها الآن القيمة التي تبدأ من 1 إلى 3
  • سطر الكود 7: إعادة ضبط قيمة "b" إلى "1" في كل مرة.
  • سطر الكود 8: داخلي حائط اللوب يتحقق من الشرط a>=b.
  • سطر الكود 10: يطبع قيمة "a" طالما تم استيفاء الشرط أعلاه.
  • سطر الكود 14: طباعة عبارة "اكتمل البرنامج"

الملخص

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