ในขณะที่วนลูปเข้า Oracle PL/SQL พร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

Oracle ลูป WHILE ใน PL/SQL จะทำซ้ำบล็อกโค้ดตราบใดที่เงื่อนไขยังคงเป็นจริง เป็นลูปที่ตรวจสอบเงื่อนไขการเข้าก่อนการวนซ้ำแต่ละครั้ง ดังนั้นบล็อกโค้ดอาจทำงานศูนย์ครั้งก็ได้ และไม่จำเป็นต้องใช้คำสั่ง EXIT อย่างชัดเจน

  • 🔁 วัตถุประสงค์: ลูป WHILE จะทำงานตราบใดที่เงื่อนไขเป็นจริง และจะหยุดทันทีที่เงื่อนไขเป็นเท็จ
  • 🚦 การตรวจสอบการเข้าเมือง: เงื่อนไขจะถูกตรวจสอบก่อนเริ่มบล็อก ดังนั้นลูปจึงสามารถทำงานได้ศูนย์ครั้ง
  • 🧮 ไม่ต้องออก: เงื่อนไขจะได้รับการตรวจสอบโดยปริยายในแต่ละรอบ ดังนั้นจึงไม่จำเป็นต้องระบุคำสั่ง EXIT อย่างชัดเจน
  • 🔢 เคาน์เตอร์ ตัวแปรภายในบล็อกจะต้องเปลี่ยนแปลงเพื่อให้เงื่อนไขกลายเป็นเท็จในที่สุด
  • ♾️ ความเสี่ยงที่ไม่มีที่สิ้นสุด: ถ้าตัวนับไม่เคยผิดเงื่อนไขเลย ลูปจะทำงานไปเรื่อยๆ อย่างไม่มีที่สิ้นสุด
  • 🇧🇷 เทียบกับ FOR: ใช้ WHILE เมื่อไม่ทราบจำนวนรอบการทำซ้ำ และใช้ FOR เมื่อทราบจำนวนรอบการทำซ้ำแล้ว
  • 🚪 ออกจากระบบก่อนเวลา: คำสั่ง EXIT WHEN ยังสามารถออกจากลูป WHILE ได้ก่อนที่เงื่อนไขจะเปลี่ยนเป็นเท็จ

Oracle PL/SQL ในขณะที่วนซ้ำ

ลูป While ใน PL/SQL คืออะไร?

การขอ ในขณะที่วนซ้ำ ใน PL/SQL การทำงานจะคล้ายกับคำสั่งลูปพื้นฐาน ยกเว้นว่าเงื่อนไขการออกจากลูปจะอยู่ที่จุดเริ่มต้นของลูป มันทำงานเหมือนลูปตรวจสอบการเข้า โดยที่บล็อกการทำงานจะทำงานก็ต่อเมื่อเงื่อนไขเป็นจริงเท่านั้น เพราะมีการตรวจสอบเงื่อนไขการออกจากลูปก่อนที่จะเริ่มทำงาน

ไม่จำเป็นต้องใช้คำว่า 'EXIT' เพื่อออกจากลูปโดยตรง เนื่องจากจะตรวจสอบเงื่อนไขโดยปริยายทุกครั้ง

PL/SQL ในขณะที่ไวยากรณ์วนซ้ำ

WHILE <EXIT condition>
LOOP
<execution block starts>
.
.
.
<execution_block_ends>
END LOOP;
  • คำว่า 'WHILE' ใช้สำหรับเริ่มต้นลูป และ 'END LOOP' ใช้สำหรับสิ้นสุดลูป
  • เงื่อนไขการออกจากโปรแกรมจะถูกประเมินทุกครั้งก่อนที่ส่วนการประมวลผลจะเริ่มทำงาน
  • บล็อกการทำงานประกอบด้วยโค้ดทั้งหมดที่จำเป็นต้องเรียกใช้งาน
  • ส่วนการประมวลผลสามารถประกอบด้วยคำสั่งใดๆ ก็ได้ที่สามารถเรียกใช้งานได้

ตัวอย่างของการ Oracle PL/SQL ในขณะที่วนซ้ำ

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

PL/SQL ในขณะที่วนตัวอย่าง
PL/SQL ในขณะที่วนตัวอย่าง
DECLARE
a NUMBER := 1;
BEGIN
dbms_output.put_line('Program started');
WHILE (a <= 5)
LOOP
dbms_output.put_line(a);
a:= a+1;
END LOOP;
dbms_output.put_line('Program completed');
END;
/

Code คำอธิบาย:

  • Code สาย 2: ประกาศตัวแปร 'a' เป็นชนิด 'NUMBER' และกำหนดค่าเริ่มต้นเป็น '1'
  • Code สาย 4: แสดงข้อความ “โปรแกรมเริ่มต้นแล้ว”
  • Code สาย 5: คำสั่ง 'WHILE' เป็นจุดเริ่มต้นของลูปและตรวจสอบว่าค่าของ 'a' น้อยกว่าหรือเท่ากับ 5 หรือไม่
  • Code สาย 7: พิมพ์ค่าของ 'a'
  • Code สาย 8: เพิ่มค่าของ 'a' ขึ้น 1
  • Code สาย 9: คำหลัก 'END LOOP' ใช้เพื่อระบุจุดสิ้นสุดของบล็อกการทำงาน
  • บรรทัดที่ 7 และ 8 จะทำงานต่อไปจนกว่าค่า 'a' จะถึง 6 ซึ่ง ณ จุดนั้นเงื่อนไขจะส่งคืนค่า FALSE และการควบคุมจะออกจากโปรแกรม ห่วง.
  • Code สาย 10: พิมพ์ข้อความ “โปรแกรมเสร็จสมบูรณ์”

ลูป WHILE เทียบกับ ลูป FOR เทียบกับ ลูปพื้นฐาน

PL/SQL มีลูปอยู่สามประเภท และการเลือกใช้ลูปที่เหมาะสมจะช่วยให้โค้ดอ่านง่ายขึ้น ลูป WHILE เหมาะสำหรับการทำซ้ำตามเงื่อนไข ในขณะที่อีกสองประเภทเหมาะสำหรับการนับจำนวนครั้งที่แน่นอนหรือการออกจากลูปที่ควบคุมอย่างชัดเจน

ห่วง เกณฑ์การออก เหมาะสำหรับใช้เมื่อ
ลูป WHILE เงื่อนไขด้านบนกลายเป็นเท็จ ไม่ทราบจำนวนรอบการทำซ้ำ
สำหรับห่วง ตัวนับถึงจุดสิ้นสุดของช่วง ทราบจำนวนรอบการทำซ้ำแล้ว
ลูปพื้นฐาน ระบุ EXIT อย่างชัดเจนในบล็อก ทางออกถูกควบคุมด้วยตนเอง

เนื่องจากลูป WHILE ตรวจสอบเงื่อนไขที่ด้านบน ดังนั้นส่วนของลูปอาจทำงานศูนย์ครั้งหากเงื่อนไขเป็นเท็จตั้งแต่เริ่มต้น นี่คือความแตกต่างที่สำคัญจากลูปพื้นฐาน ซึ่งส่วนของลูปจะทำงานอย่างน้อยหนึ่งครั้งเสมอ

การหลีกเลี่ยงลูป while ที่ไม่มีที่สิ้นสุด

ลูป WHILE ขึ้นอยู่กับการที่ตัวแปรควบคุมเคลื่อนที่เข้าใกล้เงื่อนไขการออกจากลูปเท่านั้น หากตัวแปรควบคุมไม่เคลื่อนที่เข้าใกล้เงื่อนไขดังกล่าว ลูปจะทำงานไปเรื่อยๆ และโปรแกรมจะหยุดทำงาน มีสามวิธีที่จะช่วยป้องกันปัญหานี้:

  • เปลี่ยนค่าตัวนับทุกครั้งที่วนซ้ำ ตัวอย่างนี้เพิ่มค่า 'a' ภายในลูป การลบโค้ดบรรทัดนั้นจะทำให้ลูปทำงานไปเรื่อยๆ อย่างไม่มีที่สิ้นสุด
  • ทดสอบขอบเขต ยืนยันว่าเงื่อนไขนั้นสามารถเป็นเท็จได้จริงสำหรับค่าเริ่มต้น ไม่ใช่แค่ในกรณีอุดมคติเท่านั้น
  • เพิ่มข้อความ "ทางออกฉุกเฉินเมื่อ..." สำหรับลูปที่ขับเคลื่อนด้วยข้อมูล คำสั่ง EXIT WHEN เมื่อถึงจำนวนรอบการวนซ้ำสูงสุด จะทำหน้าที่เป็นตัวป้องกันค่าที่ไม่คาดคิด

เมื่อจำนวนครั้งในการทำซ้ำถูกกำหนดไว้อย่างตายตัว ลูป FOR จะช่วยขจัดความเสี่ยงทั้งหมด เนื่องจากตัวนับจะถูกจัดการโดยอัตโนมัติ

คำถามที่พบบ่อย

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

ตรวจสอบให้แน่ใจว่าตัวแปรภายในลูปเปลี่ยนแปลงไปในทิศทางของเงื่อนไขการออกจากลูปในแต่ละรอบ การเพิ่มคำสั่ง EXIT WHEN เมื่อถึงจำนวนครั้งสูงสุดจะเป็นตัวช่วยเสริมความปลอดภัยที่มีประโยชน์สำหรับลูปที่ขับเคลื่อนด้วยข้อมูล

ใช้ WHILE เมื่อไม่ทราบจำนวนรอบการวนซ้ำและขึ้นอยู่กับเงื่อนไข ใช้ FOR เมื่อวนซ้ำในช่วงที่กำหนดไว้ เนื่องจากตัวนับจะถูกจัดการโดยอัตโนมัติ

โดยทั่วไป AI สามารถตรวจสอบได้ว่าตัวแปรควบคุมเคลื่อนไปสู่เงื่อนไขการออกจากลูปหรือไม่ และจะแจ้งเตือนเมื่อไม่เป็นเช่นนั้น ลูปที่มีการออกจากลูปขึ้นอยู่กับข้อมูลแบบเรียลไทม์ยังคงต้องมีการทดสอบเพื่อให้แน่ใจ

ใช่แล้ว แม้ว่าลูป WHILE จะออกจากลูปเมื่อเงื่อนไขด้านบนเป็นเท็จ แต่คำสั่ง EXIT หรือ EXIT WHEN ที่อยู่ภายในตัวลูปสามารถออกจากลูปได้ก่อนกำหนด ซึ่งมีประโยชน์สำหรับการหยุดลูปในกรณีพิเศษ

สรุปโพสต์นี้ด้วย: