วิธีสร้างขั้นตอนการจัดเก็บใน PostgreSQL

Withi Srang Khan Txn Kar Cad Keb Ni Postgresql



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

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

การทำงานกับ Stored Procedure ใน PostgreSQL

ในฐานะผู้ใช้ PostgreSQL คุณอาจสังเกตเห็นว่าฟังก์ชัน PostgreSQL ไม่ดำเนินธุรกรรม แม้ว่าจะสามารถสร้างธุรกรรมได้ แต่การดำเนินการหรือการย้อนกลับไปยังสถานะก่อนหน้านั้นเป็นไปไม่ได้ อย่างไรก็ตาม ข้อจำกัดเหล่านี้ถูกข้ามไปโดยใช้ขั้นตอนการจัดเก็บ







ต่อไปนี้เป็นไวยากรณ์พื้นฐานในการสร้างขั้นตอนการจัดเก็บใน PostgreSQL:



สร้างหรือแทนที่ขั้นตอน Procedure_name(

พารามิเตอร์ [s] data_type

)

ภาษา plpsql;

เช่น $$

ประกาศ

ตัวแปร_if_ประเภทข้อมูลใด ๆ

เริ่ม

ตรรกะ

จบ;

$$

สิ่งสำคัญที่ควรทราบจากไวยากรณ์ที่กำหนดคือ 'procedure_name' ซึ่งเป็นชื่อที่คุณจะใช้สำหรับกระบวนงานที่เก็บไว้ พารามิเตอร์ที่คุณต้องการรวมและประเภทข้อมูล และตรรกะซึ่งส่วนใหญ่เป็นคำสั่ง SQL



เราจะยกตัวอย่างสามตัวอย่างเพื่อช่วยให้คุณเข้าใจวิธีสร้างขั้นตอนการจัดเก็บใน PostgreSQL





ตัวอย่างที่ 1: ขั้นตอนการจัดเก็บเพื่อคำนวณกำลังสองของตัวเลข

สำหรับตัวอย่างแรกของเรา เราสร้างขั้นตอนการจัดเก็บที่ใช้คำสั่ง 'RAISE NOTICE' เป็นวิธีการพิมพ์เอาต์พุตไปยังเทอร์มินัล โพรซีเดอร์ที่เก็บไว้ใช้ค่าจำนวนเต็มที่คุณให้ไว้เมื่อเรียกใช้และคำนวณกำลังสอง

ต่อไปนี้คือวิธีที่เราสร้างขั้นตอนการจัดเก็บ:



เราตั้งชื่อพารามิเตอร์ของเราว่า 'num1' และเป็นจำนวนเต็ม สำหรับส่วนลอจิก เรากำหนดวิธีที่มันรับค่ากำลังสองของ 'num1' และจัดเก็บเป็นตัวแปรกำลังสอง เมื่อเราดำเนินการคำสั่ง เราได้รับเอาต์พุต “CREATE PROCEDURE” ซึ่งยืนยันว่าเราจัดการเพื่อสร้างขั้นตอนการจัดเก็บได้สำเร็จ

ภารกิจต่อไปคือการเรียกโพรซีเดอร์และให้อาร์กิวเมนต์ที่คาดหวัง

CALL Procedure_name (อาร์กิวเมนต์);

คุณจะได้รับเอาต์พุต CALL ซึ่งแสดงว่าขั้นตอนการจัดเก็บได้ดำเนินการแล้ว และเราได้รับเอาต์พุตที่คาดหวัง ซึ่งในกรณีนี้คือกำลังสองของอาร์กิวเมนต์ที่เราเพิ่มเข้าไป

ตัวอย่างที่ 2: ขั้นตอนการจัดเก็บเพื่อแทรกค่าลงในรายการตาราง

สองตัวอย่างต่อไปนี้แสดงวิธีการสร้างขั้นตอนการจัดเก็บที่ทำงานกับตารางฐานข้อมูล มาสร้างตาราง 'นักเรียน' ที่เราจะใช้งานกันอย่างรวดเร็ว

สำหรับตัวอย่างนี้ เราสร้างขั้นตอนการจัดเก็บที่อนุญาตให้ผู้ใช้สามารถแทรกค่าลงในตารางที่สร้างขึ้นใหม่ โปรดสังเกตว่าเราระบุพารามิเตอร์ที่เราคาดว่าจะเพิ่มเป็นอาร์กิวเมนต์เมื่อเราเรียกกระบวนงานที่เก็บไว้ได้อย่างไร ยิ่งไปกว่านั้น เรายังกำหนดตรรกะที่รับอาร์กิวเมนต์ที่เพิ่มเข้ามาและดำเนินการคำสั่ง INSERT SQL ไปยังตาราง “students”

เราสามารถตรวจสอบขั้นตอนการจัดเก็บที่มีอยู่ได้โดยการรันคำสั่งต่อไปนี้:

\df

ขั้นตอนการจัดเก็บแรกที่เราเห็นได้จากผลลัพธ์ต่อไปนี้คือ “add_student” ที่เราสร้างขึ้นก่อนหน้านี้

ตอนนี้เรามาเรียกขั้นตอนที่เก็บไว้เพื่อดำเนินการ รูปภาพต่อไปนี้แสดงให้เห็นว่าเรามีตารางว่างอย่างไร แต่เราเรียกขั้นตอนการจัดเก็บเพื่อเพิ่มนักเรียนคนแรก:

หากเราแสดงรายการค่าในตารางของเรา ให้สังเกตว่าอาร์กิวเมนต์ที่เราเพิ่มด้วยคำสั่ง call Procedure เป็นค่าสำหรับนักเรียนคนแรกในตารางของเราอย่างไร นั่นคือวิธีที่คุณสร้างขั้นตอนการจัดเก็บเพื่อแทรกค่าลงในตาราง

โปรดทราบว่าเมื่อสร้างขั้นตอนการจัดเก็บ พารามิเตอร์ที่คุณระบุจะต้องตรงกับสิ่งที่คาดหวังในตารางของคุณเพื่อหลีกเลี่ยงข้อผิดพลาด นอกจากนี้ประเภทข้อมูลจะต้องตรงกัน

ตัวอย่างที่ 3: ขั้นตอนที่เก็บไว้เพื่ออัปเดตรายการตาราง

ต่อไป เรามาสร้างขั้นตอนการจัดเก็บอื่นที่อัปเดตรายการตารางกันดีกว่า หากคุณต้องการวิธีที่รวดเร็วในการอัปเดตค่าในตารางของเรา คุณสามารถสร้างขั้นตอนการอัปเดตที่เก็บไว้ได้ดังนี้:

ระบุคอลัมน์ที่คุณต้องการอัปเดตโดยใช้คีย์เวิร์ด WHERE และค่าใหม่โดยใช้คีย์เวิร์ด SET จากนั้นคุณต้องเพิ่มคำสำคัญ COMMIT เพื่อยืนยันการเปลี่ยนแปลง

ลองเรียกกระบวนการอัปเดตที่เก็บไว้และเพิ่มอาร์กิวเมนต์ที่คาดหวัง: “student_id” และหลักสูตรใหม่

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

บทสรุป

คุณสามารถสร้างขั้นตอนการจัดเก็บใดๆ ใน PostgreSQL ได้ คุณเพียงแค่ต้องเข้าใจไวยากรณ์ที่ต้องปฏิบัติตาม จากนั้นจึงกำหนดตรรกะของคุณสำหรับกระบวนงานที่เก็บไว้ จากนั้นให้เรียกกระบวนงานที่เก็บไว้และตรวจสอบว่าได้ดำเนินการตามที่คาดไว้ โพสต์นี้อธิบายเกี่ยวกับขั้นตอนการจัดเก็บใน PostgreSQL และให้ตัวอย่างเกี่ยวกับวิธีการสร้างขั้นตอนเหล่านี้