โฟลว์การควบคุมเป็นหนึ่งในองค์ประกอบหลักในการเขียนโปรแกรม มันกำหนดลำดับที่บล็อกโค้ดต่างๆ ถูกดำเนินการในโปรแกรม
เช่นเดียวกับภาษาการเขียนโปรแกรมส่วนใหญ่ ภาษา Oracle PL/SQL มีคำสั่งโฟลว์การควบคุมต่างๆ เช่น IF-THEN, CASE, FOR, WHILE เป็นต้น
ในโพสต์นี้ เราจะเรียนรู้วิธีการทำงานกับคำสั่ง CASE ใน PL/SQL เพื่อแนะนำโฟลว์การควบคุมในแบบสอบถาม Oracle ของเรา
บทนำสู่คำสั่ง CASE
คำสั่ง CASE ให้คุณกำหนดลำดับของคำสั่ง จากนั้นคำสั่ง case จะเลือกหนึ่งลำดับเพื่อดำเนินการตามเงื่อนไขที่ระบุ
ให้คิดว่ามันเป็นวิธีที่มีประสิทธิภาพมากกว่าในการประกาศชุดของบล็อก if-then ในขณะที่คงความสามารถในการอ่าน
เราสามารถแสดงไวยากรณ์ของคำสั่ง CASE ใน Oracle ได้ดังที่แสดงต่อไปนี้:
กรณีเมื่อเงื่อนไข 1 แล้วผลลัพธ์ 1
เมื่อเงื่อนไข 2 แล้วผลลัพธ์ 2
...
ผลลัพธ์อื่น
จบ
คำสั่ง CASE จะประเมินแต่ละเงื่อนไขในคำสั่ง WHEN ในไวยากรณ์นี้
หากคำสั่งพบคำสั่งที่ตรงกัน ระบบจะส่งกลับผลลัพธ์ที่ตรงกัน อย่างไรก็ตาม ในบางกรณี คำชี้แจงกรณีและปัญหาอาจไม่พบเงื่อนไขที่ตรงกัน ในสถานการณ์ดังกล่าว คำสั่งจะดำเนินการตามผลลัพธ์ที่กำหนดไว้ในบล็อก ELSE
บันทึก : บล็อก ELSE เป็นตัวเลือก หากไม่พร้อมใช้งาน โปรแกรมฐานข้อมูลจะใช้ไวยากรณ์ต่อไปนี้:
อื่น:ยกกรณี_NOT_FOUND;
ซึ่งช่วยให้กลไกฐานข้อมูลเพิ่มข้อยกเว้นและหยุดการดำเนินการชั่วคราวเมื่อไม่มีเงื่อนไขที่ตรงกัน
ตัวอย่างที่ 1: ตัวอย่างพื้นฐานของคำสั่ง CASE
ตัวอย่างนี้แสดงตัวอย่างการใช้งานพื้นฐานของตัวดำเนินการเคสใน Oracle:
ประกาศหมายเลขอายุ
ถ่านรายการ (10);
เริ่ม
อายุ := 24;
อายุคดี
เมื่อ17แล้ว
รายการ := 'ปฏิเสธ';
เมื่อ24แล้ว
รายการ := '9.99';
เมื่อ45แล้ว
รายการ :='15.99';
อื่น
รายการ := 'ไม่อนุญาต';
กรณีสิ้นสุด;
DBMS_OUTPUT.PUT_LINE (รายการ);
จบ;
ภาพประกอบที่ให้มาควรทดสอบเงื่อนไขที่ตรงกันและส่งกลับสถานะที่สอดคล้องกัน ตัวอย่างเช่น เนื่องจากเงื่อนไขการจับคู่คือ 24 ส่วนคำสั่งจะส่งกลับดังนี้:
9.99ตัวอย่างที่ 2: คำสั่ง CASE กับตารางฐานข้อมูล
ตัวอย่างนี้ใช้ case statement กับตารางฐานข้อมูล
เลือก first_name, last_name, เงินเดือน,กรณี
เมื่อเงินเดือน 2500 แล้ว 'สูง'
อื่น ๆ 'ไม่ทราบ'
สิ้นสุดเป็นเงินเดือน_สถานะ
จากพนักงาน;
ข้อความค้นหาที่ให้มาจะใช้คำสั่งกรณีและปัญหาเพื่อทดสอบช่วงเงินเดือนจากตารางของพนักงาน
ค่าที่ได้จะแสดงดังต่อไปนี้:
บทสรุป
ในโพสต์นี้ คุณได้เรียนรู้วิธีใช้ Oracle case statement เพื่อทดสอบเงื่อนไขต่างๆ และดำเนินการหากเงื่อนไขหนึ่งเป็นจริง