วิธีสร้างฟังก์ชัน PostgreSQL เพื่อส่งคืนตาราง
เมื่อคุณมีฐานข้อมูล PostgreSQL และต้องการตรวจสอบบันทึกจากตาราง การใช้ฟังก์ชันเป็นระยะๆ เป็นวิธีที่สะดวกที่สุด โดยเฉพาะฟังก์ชัน PostgreSQL ที่ส่งคืนตารางในชุดผลลัพธ์ ด้วยวิธีนี้ คุณจะสรุปชุดผลลัพธ์ของคุณ และการใช้วิธีการนี้จะช่วยให้มีการจัดระเบียบโค้ดที่ดีขึ้น
ต่อไปนี้เป็นไวยากรณ์สำหรับสร้างฟังก์ชัน PostgreSQL ที่ส่งคืนตาราง:
สร้างหรือแทนที่ฟังก์ชัน function_name(parameter_list)
ตารางการส่งคืน (column_list)
เช่น $$
BEGIN RETURN QUERY (แบบสอบถาม);
จบ;
$$ ภาษา plpgsql
ข้อดีของการสร้างฟังก์ชันดังกล่าวคือช่วยให้คุณสามารถระบุ 'column_list' ต่างๆ ได้ แทนที่จะส่งกลับค่าเดียวจากตารางของคุณ เรามีสองตัวอย่างเพื่อช่วยให้เราเข้าใจว่าต้องปฏิบัติตามขั้นตอนใด
ตัวอย่างที่ 1: การทำงานกับอินพุตเดียว
เมื่อสร้างฟังก์ชันที่ส่งคืนตาราง คุณต้องระบุอาร์กิวเมนต์เพื่อใช้กับคิวรีส่งคืน อาร์กิวเมนต์อาจเป็นรูปแบบหรืออินพุตเฉพาะก็ได้ ตัวอย่างนี้ให้กรณีที่เราใช้อินพุตเดียวเป็นอาร์กิวเมนต์
ต่อไปนี้คือตาราง “นักเรียน” ที่เราจะใช้สำหรับการสืบค้นของเรา:
ในภาพต่อไปนี้ เราสร้างฟังก์ชันชื่อ 'get_student' ซึ่งรับ INT เป็นอาร์กิวเมนต์ ในส่วน RETURNS TABLE เราจะส่งคืนตารางที่มีสี่คอลัมน์ ได้แก่ “student_id”, “student_name”, “student_faculty” และ “current_status”
คอลัมน์ทั้งหมดเหล่านี้ได้รับค่าจากแบบสอบถามส่งคืนที่เรากำหนด โปรดสังเกตว่าแบบสอบถามที่ส่งคืนใช้คำสั่ง WHERE โดยใช้รายการพารามิเตอร์ที่เราระบุเมื่อสร้างฟังก์ชัน
เมื่อคุณสร้างฟังก์ชันนี้ คุณจะได้รับผลลัพธ์ที่คล้ายกับฟังก์ชันที่เราเคยมีก่อนหน้านี้ ซึ่งยืนยันว่าฟังก์ชัน PostgreSQL ของคุณถูกสร้างขึ้นได้สำเร็จ หากต้องการตรวจสอบเพิ่มเติม ให้รันคำสั่งต่อไปนี้เพื่อแสดงรายการฟังก์ชันที่พร้อมใช้งาน:
\df *get_student();เราเพิ่มเครื่องหมายดอกจันเพื่อให้ตรงกับฟังก์ชันใดๆ ที่มีชื่อที่ระบุ ผลลัพธ์แสดงว่าเรามีฟังก์ชัน PostgreSQL ในฐานข้อมูลของเรา
ขั้นตอนสุดท้ายคือการทดสอบฟังก์ชันที่สร้างขึ้น เรียกใช้คำสั่ง 'select' เพื่อเรียกใช้ฟังก์ชัน จากนั้น เพิ่มอาร์กิวเมนต์ที่คาดหวัง ในกรณีของเรา พารามิเตอร์จะเป็นประเภท INT ดังนั้นเราจึงเพิ่ม 1 เป็นอาร์กิวเมนต์ของเราเพื่อดึงข้อมูลระเบียนที่ตรงกันและส่งกลับตารางดังแสดงต่อไปนี้:
ตัวอย่างที่ 2: การทำงานกับรูปแบบการป้อนข้อมูล
เมื่อไม่แน่ใจถึงค่าที่จะใช้กับการสืบค้นแบบส่งคืน คุณสามารถใช้ตัวดำเนินการ ILIKE เพื่อจับคู่รูปแบบที่กำหนดได้ ตัวอย่างเช่น หากคุณมีชื่อและรู้เพียงส่วนของสตริง ตัวดำเนินการ ILIKE จะให้คุณใช้สัญลักษณ์ “%” เพื่อกำหนดว่ารูปแบบของคุณจะเป็นอย่างไร
เราใช้ตารางต่อไปนี้สำหรับกรณีนี้และกำหนดเป้าหมายคอลัมน์ชื่อ:
เราสร้างฟังก์ชั่นที่คล้ายกับที่เราทำก่อนหน้านี้ อย่างไรก็ตาม ประเภทพารามิเตอร์มีการเปลี่ยนแปลง และแบบสอบถามส่งคืนใช้ตัวดำเนินการ ILIKE ซึ่งถูกเพิ่มเป็นอาร์กิวเมนต์เมื่อเรียกใช้ฟังก์ชัน
เมื่อฟังก์ชั่นพร้อมแล้วเราก็สามารถเรียกมันคืนตารางได้ มีวิธีที่แตกต่างกันไปเกี่ยวกับเรื่องนี้ ตัวอย่างเช่น หากรูปแบบการค้นหามีคำว่า 'Jo' อยู่ในสตริง เราจะดำเนินการสืบค้นคำสั่งดังต่อไปนี้:
เลือก * จาก get_details('%Jo%');เราจับคู่ค่าทั้งหมดกับ 'Jo' ในสตริง ทำให้เรามีสองระเบียน
หากเรารู้เพียงส่วนสุดท้ายของสตริง เราจะบิดแบบสอบถามและรันดังนี้:
เลือก * จาก get_details('%Tyson');
สุดท้ายนี้ ถ้าเราทราบส่วนแรกของสตริง เราจะเพิ่มสัญลักษณ์ “&” หลังรูปแบบดังแสดงต่อไปนี้:
เลือก * จาก get_details('Tim%');
นี่เป็นตัวอย่างที่แตกต่างกันเกี่ยวกับวิธีใช้ฟังก์ชัน PostgreSQL เพื่อส่งคืนตาราง
บทสรุป
PostgreSQL เป็นฐานข้อมูลที่ทรงพลังพร้อมคุณสมบัติมากมาย เมื่อสร้างฟังก์ชัน คุณสามารถตั้งค่าให้ส่งคืนตารางเป็นผลลัพธ์ที่ตั้งไว้ด้วยเหตุผลหลายประการ รวมถึงการบรรลุการห่อหุ้ม โพสต์นี้นำเสนอสองตัวอย่างของการสร้างและการใช้ฟังก์ชันที่ส่งคืนตารางใน PostgreSQL