เช่นเดียวกับภาษาโปรแกรมหลักทั้งหมด PL/SQL รองรับการวนซ้ำซึ่งอนุญาตให้ชุดคำสั่งทำซ้ำได้จนกว่าจะตรงตามเงื่อนไขที่กำหนด
ในบทช่วยสอนนี้ เราจะสำรวจการใช้คำสั่ง LOOP ใน PL/SQL เพื่อรันบล็อกโค้ดซ้ำๆ
ออราเคิลลูป
ภาษา PL/SQL รองรับการสร้างลูปต่างๆ เช่น ลูป 'for' และลูป ' while' เราสามารถแสดงไวยากรณ์ของลูปทั่วไปใน Oracle ได้ดังที่แสดงต่อไปนี้:
<< ฉลาก >> ลูป
loop_statement;
สิ้นสุดลูป loop_label;
ประกอบด้วยคีย์เวิร์ด LOOP และเนื้อหาของลูปเพื่อดำเนินการ และปิดท้ายด้วยคีย์เวิร์ด END LOOP
บล็อกลูปรันการกระทำที่กำหนดไว้และส่งกลับการควบคุมไปยังส่วนคำสั่งลูปบนสุดหลังจากเสร็จสิ้น โดยปกติจะอยู่ในคำสั่ง EXIT หรือ EXIT WHEN เพื่อยุติการวนซ้ำหลังจากตรงตามเงื่อนไขที่ระบุ สิ่งนี้ช่วยป้องกันการวนซ้ำไม่สิ้นสุด
Oracle สำหรับไวยากรณ์ลูป:
ต่อไปนี้แสดงไวยากรณ์ของลูป 'for' ใน PL/SQL:
เริ่มสำหรับ loop_variable ใน [lower_bound..upper_bound] LOOP
-- รหัสที่จะดำเนินการในวง
จบลูป;
จบ;
loop_variable ให้คุณกำหนดลูปที่ใช้ในการควบคุมลูปและขอบเขตล่างและบน ขอบเขตบนและล่างระบุค่าช่วงที่การประเมินลูปเกิดขึ้น
Oracle ในขณะที่วนซ้ำ
นอกจากนี้ เรายังสามารถกำหนดลูป “ while” ใน PL/SQL ที่แสดงโดยไวยากรณ์ต่อไปนี้:
เริ่มในขณะที่เงื่อนไข LOOP
- การดำเนินการวนซ้ำ
จบลูป;
จบ;
ในลูป “ while” การดำเนินการของลูปจะถูกดำเนินการซ้ำ ๆ ในขณะที่เงื่อนไขเป็นจริง
เคอร์เซอร์ Oracle สำหรับลูป
Oracle ยังสนับสนุนลูป 'เคอร์เซอร์สำหรับ' ซึ่งทำให้เราสามารถดำเนินการชุดคำสั่งสำหรับทุกแถวในชุดผลลัพธ์ที่กำหนด ไวยากรณ์สามารถแสดงได้ดังนี้:
เริ่มFOR loop_variable IN (เลือกคอลัมน์ 1, คอลัมน์ 2, ...
จากตารางที่ 1 ตารางที่ 2 ...
ที่เงื่อนไข) ห่วง
- การดำเนินการวนซ้ำ
จบลูป;
จบ;
ตัวอย่างลูปใน Oracle
ตัวอย่างต่อไปนี้ครอบคลุมพื้นฐานการทำงานกับ for, while และ for cursor loops ใน Oracle
ตัวอย่าง Oracle สำหรับลูป:
ตัวอย่างนี้สาธิตวิธีใช้ลูป 'for' เพื่อพิมพ์ตัวเลขตั้งแต่ 1 ถึง 10
เริ่มสำหรับฉันใน 1..10 ลูป
DBMS_OUTPUT.PUT_LINE(ผม);
จบลูป;
จบ;
ในขณะที่ตัวอย่างลูป:
เราสามารถดำเนินการที่คล้ายกันได้โดยใช้การวนรอบในขณะที่แสดงดังต่อไปนี้:
เริ่มประกาศ
ฉัน หมายเลข := 1;
เริ่ม
ในขณะที่ฉัน <= 10 ลูป
DBMS_OUTPUT.PUT_LINE(ผม);
ผม := ผม + 1;
จบลูป;
จบ;
จบ;
สิ่งนี้ควรดำเนินการคล้ายกับลูป 'for'
เคอร์เซอร์สำหรับตัวอย่างลูป:
ข้อมูลต่อไปนี้แสดงวิธีใช้ลูป 'เคอร์เซอร์สำหรับ' เพื่อรับชื่อเต็มของลูกค้า:
เริ่มสำหรับพนักงาน IN (เลือก first_name, last_name
จากพนักงาน) ลูป
DBMS_OUTPUT.PUT_LINE(employee.first_name || ' ' || Employee.last_name);
จบลูป;
จบ;
ตัวอย่างเอาต์พุต:
บทสรุป
ในโพสต์นี้ คุณพบการวนซ้ำสามประเภทหลักในภาษา Oracle PL/SQL คุณสามารถตรวจสอบเอกสารเพื่อสำรวจเพิ่มเติม