Oracle PL/SQL สำหรับ LOOP พร้อมตัวอย่าง

For Loop คืออะไร?

คำสั่ง “FOR LOOP” เหมาะที่สุดเมื่อคุณต้องการรันโค้ดตามจำนวนครั้งที่ทราบ แทนที่จะขึ้นอยู่กับเงื่อนไขอื่นๆ

ในลูปนี้ ขีดจำกัดล่างและขีดจำกัดสูงกว่าจะถูกระบุ และตราบใดที่ตัวแปรลูปอยู่ระหว่างช่วงนี้ ลูปก็จะถูกดำเนินการ

ตัวแปรลูปเป็นแบบเพิ่มค่าเอง ดังนั้นจึงไม่จำเป็นต้องดำเนินการเพิ่มค่าโดยชัดเจนในลูปนี้ ไม่จำเป็นต้องประกาศตัวแปรลูป เนื่องจากตัวแปรลูปได้รับการประกาศโดยปริยาย

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

คำอธิบายไวยากรณ์:

  • ในรูปแบบข้างต้น คำหลัก 'FOR' ทำเครื่องหมายจุดเริ่มต้นของลูป และ 'END LOOP' ทำเครื่องหมายจุดสิ้นสุดของลูป
  • ตัวแปรวนรอบจะได้รับการประเมินทุกครั้งก่อนที่จะดำเนินการส่วนการดำเนินการ
  • บล็อกการดำเนินการประกอบด้วยโค้ดทั้งหมดที่ต้องดำเนินการ ส่วนการดำเนินการสามารถประกอบด้วยคำสั่งการดำเนินการใดๆ
  • loop_variable ได้รับการประกาศโดยปริยายระหว่างการดำเนินการของลูปทั้งหมด และขอบเขตของ loop_variable นี้จะอยู่ภายในลูปนี้เท่านั้น
  • หากตัวแปรลูปอยู่นอกช่วง การควบคุมจะออกจากลูป
  • การวนซ้ำสามารถกำหนดให้ทำงานในลำดับย้อนกลับได้โดยการเพิ่มคำหลัก 'REVERSE' ก่อน lower_limit

1 ตัวอย่าง:ในตัวอย่างนี้ เราจะพิมพ์ตัวเลขตั้งแต่ 1 ถึง 5 โดยใช้คำสั่ง FOR loop โดยเราจะรันโค้ดต่อไปนี้

Oracle PL/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: พิมพ์ข้อความ “Program beginning”
  • รหัสบรรทัด 3: คำหลัก 'FOR' ถือเป็นจุดเริ่มต้นของการวนซ้ำและมีการประกาศ loop_variable 'a' ตอนนี้จะมีค่าตั้งแต่ 1 ถึง 5
  • รหัสบรรทัด 5: พิมพ์ค่าของ 'a'
  • รหัสบรรทัด 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 loop โดยตัวเลขแต่ละตัวจะถูกพิมพ์ออกมาตามจำนวนครั้งของค่าของตัวเลขนั้น ๆ เพื่อจุดประสงค์นั้น เราจะดำเนินการตามโค้ดต่อไปนี้

ลูปซ้อน

ลูปซ้อน

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: พิมพ์ข้อความ “Program beginning”
  • รหัสบรรทัด 5: คำหลัก 'FOR' ถือเป็นจุดเริ่มต้นของการวนซ้ำและมีการประกาศ loop_variable 'a' ตอนนี้จะมีค่าตั้งแต่ 1 ถึง 3
  • รหัสบรรทัด 7: รีเซ็ตค่า 'b' เป็น '1' ในแต่ละครั้ง
  • รหัสบรรทัด 8: ภายใน ในขณะที่วนซ้ำ ตรวจสอบเงื่อนไข a>=b
  • รหัสบรรทัด 10: พิมพ์ค่า 'a' ตราบใดที่เป็นไปตามเงื่อนไขข้างต้น
  • รหัสบรรทัด 14: พิมพ์ข้อความ “โปรแกรมเสร็จสมบูรณ์”

สรุป

ห่วง สำหรับห่วง
เกณฑ์การออก ออกเมื่อตัวนับถึงขีดจำกัด
การใช้ เหมาะที่จะใช้เมื่อทราบการนับลูปที่จะดำเนินการ