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

กระบวนงานที่เก็บไว้โดยใช้ตัวแปรในนิพจน์ LIMIT?


เรามาสร้างตารางกันก่อน

mysql> สร้างตาราง LimitWithStoredProcedure -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, -> Name varchar(10) -> );Query OK, 0 แถวได้รับผลกระทบ (0.47 วินาที)

แทรกบางระเบียนในตารางโดยใช้คำสั่ง insert

แบบสอบถามมีดังนี้

mysql> แทรกลงในค่า LimitWithStoredProcedure(Name) ('John');Query OK, 1 แถวได้รับผลกระทบ (0.15 วินาที)mysql> แทรกลงในค่า LimitWithStoredProcedure(Name) ('Chris'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.15 วินาที) mysql> แทรกลงในค่า LimitWithStoredProcedure (ชื่อ) ('Maxwell'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.28 วินาที) mysql> แทรกลงในค่า LimitWithStoredProcedure (ชื่อ) ('Bob'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.24 วินาที) mysql> แทรกลงในค่า LimitWithStoredProcedure (ชื่อ) ('David'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงในค่า LimitWithStoredProcedure (ชื่อ) ('Carol'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.18 วินาที) mysql> แทรกลงในค่า LimitWithStoredProcedure (ชื่อ) ('James'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.29 วินาที) mysql> แทรกลงในค่า LimitWithStoredProcedure (ชื่อ) ('Jace'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.13 วินาที) mysql> แทรกลงในค่า LimitWithStoredProcedure (ชื่อ) ('Robert'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงในค่า LimitWithStoredProcedure (ชื่อ) ('ไมค์'); แบบสอบถามตกลงมีผล 1 แถว ed (0.07 วินาที)mysql> แทรกลงในค่า LimitWithStoredProcedure (ชื่อ) ('Sam'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.25 วินาที) mysql> แทรกลงในค่า LimitWithStoredProcedure (ชื่อ) ('Peter'); แบบสอบถามตกลง 1 แถว ได้รับผลกระทบ (0.14 วินาที) mysql> แทรกลงในค่า LimitWithStoredProcedure (ชื่อ) ('Ramit'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกลงในค่า LimitWithStoredProcedure (ชื่อ) ('Tony'); แบบสอบถามตกลง 1 แถว ได้รับผลกระทบ (0.16 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select

แบบสอบถามมีดังนี้

mysql> เลือก *จาก LimitWithStoredProcedure;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+----+---------+| รหัส | ชื่อ |+----+---------+| 1 | จอห์น || 2 | คริส || 3 | แม็กซ์เวลล์ || 4 | บ๊อบ || 5 | เดวิด || 6 | แครอล || 7 | เจมส์ || 8 | เจซ || 9 | โรเบิร์ต || 10 | ไมค์ || 11 | แซม || 12 | ปีเตอร์ || 13 | รมิท || 14 | Tony |+----+---------+14 แถวในชุด (0.00 วินาที)

นี่คือขั้นตอนการจัดเก็บของคุณโดยใช้ตัวแปรในนิพจน์ LIMIT

mysql> DELIMITER //mysql> CREATE PROCEDURE Sp_limit(IN beg INTEGER, IN end INTEGER ) -> BEGIN -> PREPARE myStatement FROM -> "select *from LimitWithStoredProcedure LIMIT ?,? "; -> SET @beginning =ขอ; -> SET @ending =end; -> ดำเนินการ myStatement โดยใช้ @beginning, @ending; -> DEALLOCATE เตรียม myStatement; -> END //แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.25 วินาที) mysql> DELIMITER;

เรียกใช้กระบวนงานที่เก็บไว้โดยใช้คำสั่ง CALL

แบบสอบถามมีดังนี้

mysql> โทร Sp_limit(4,7);

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+----+---------+| รหัส | ชื่อ |+----+--------+| 5 | เดวิด || 6 | แครอล || 7 | เจมส์ || 8 | เจซ || 9 | โรเบิร์ต || 10 | ไมค์ || 11 | แซม |+----+--------+7 แถวในชุด (0.00 วินาที) แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.03 วินาที)