Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

สร้าง Stored Procedure ใน MySQL ที่รับ LIMIT เป็นพารามิเตอร์

ใน MySQL สามารถสร้าง Stored Procedure ที่รับพารามิเตอร์ LIMIT เข้ามา เพื่อควบคุมจำนวนแถวที่ต้องการแสดงได้แบบ Dynamic

ตัวอย่างการใช้งาน

สร้างตารางและเพิ่มข้อมูล 6 แถว:

mysql> create table DemoTable1368 (ClientId int, ClientName varchar(20));
mysql> insert into DemoTable1368 values(101,'Adam'),(102,'Bob'),(103,'John'),(104,'Sam'),(105,'Mike'),(106,'Carol');

สร้าง Stored Procedure รับพารามิเตอร์ limitValue

mysql> DELIMITER //
mysql> CREATE PROCEDURE limit_Demo(IN limitValue INT)
    -> BEGIN
    ->     DECLARE limValue INT;
    ->     SET limValue = limitValue;
    ->     SELECT * FROM DemoTable1368 LIMIT limValue;
    -> END //
mysql> DELIMITER ;

เรียกใช้ Procedure กำหนด LIMIT = 3

mysql> CALL limit_Demo(3);

ผลลัพธ์ (3 แถวแรก)

+----------+------------+
| ClientId | ClientName |
+----------+------------+
| 101      | Adam       |
| 102      | Bob        |
| 103      | John       |
+----------+------------+

คำอธิบาย:

  • DELIMITER // เปลี่ยนตัวคั่นคำสั่งชั่วคราว เพื่อให้ ; ภายใน Procedure ไม่จบคำสั่ง
  • IN limitValue INT รับพารามิเตอร์เข้า
  • DECLARE limValue INT ประกาศตัวแปร Local
  • SET limValue = limitValue กำหนดค่า (MySQL ไม่รองรับ LIMIT ตรงจากพารามิเตอร์ ต้องผ่านตัวแปร)
  • LIMIT limValue ใช้ตัวแปรใน LIMIT clause
  • MySQL 8.0+ รองรับ LIMIT @var โดยตรงใน Prepared Statement