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 โดยเราจะรันโค้ดต่อไปนี้
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: พิมพ์ข้อความ “โปรแกรมเสร็จสมบูรณ์”
สรุป
ห่วง | สำหรับห่วง |
---|---|
เกณฑ์การออก | ออกเมื่อตัวนับถึงขีดจำกัด |
การใช้ | เหมาะที่จะใช้เมื่อทราบการนับลูปที่จะดำเนินการ |