Computer >> Máy Tính >  >> Lập trình >> MySQL

Tạo một thủ tục được lưu trữ với MySQL và đặt giới hạn để chỉ hiển thị một số bản ghi cụ thể

Đầu tiên chúng ta hãy tạo một bảng -

mysql> create table DemoTable1368
    -> (
    -> ClientId int,
    -> ClientName varchar(20)
    -> );
Query OK, 0 rows affected (0.58 sec)

Chèn một số bản ghi vào bảng bằng lệnh chèn -

mysql> insert into DemoTable1368 values(101,'Adam');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable1368 values(102,'Bob');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1368 values(103,'John');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1368 values(104,'Sam');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1368 values(105,'Mike');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1368 values(106,'Carol');
Query OK, 1 row affected (0.11 sec)

Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select -

mysql> select * from DemoTable1368;

Điều này sẽ tạo ra kết quả sau -

+----------+------------+
| ClientId | ClientName |
+----------+------------+
|      101 | Adam       |
|      102 | Bob        |
|      103 | John       |
|      104 | Sam        |
|      105 | Mike       |
|      106 | Carol      |
+----------+------------+
6 rows in set (0.00 sec)

Sau đây là truy vấn để tạo một thủ tục được lưu trữ và sử dụng MySQL LIMIT để giới hạn số lượng bản ghi được hiển thị -

mysql> DELIMITER //
mysql> CREATE PROCEDURE limit_Demo(IN limitValue int)
    -> BEGIN
    -> DECLARE limValue int;
    -> SET limValue =limitValue ;
    -> SELECT * FROM DemoTable1368 LIMIT limValue;
    -> END
    -> //
Query OK, 0 rows affected (0.17 sec)
mysql> DELIMITER ;

Bây giờ bạn có thể gọi thủ tục đã lưu trữ bằng lệnh gọi -

mysql> CALL limit_Demo(3);

Điều này sẽ tạo ra kết quả sau -

+----------+------------+
| ClientId | ClientName |
+----------+------------+
|      101 | Adam       |
|      102 | Bob        |
|      103 | John       |
+----------+------------+
3 rows in set (0.00 sec)
Query OK, 0 rows affected (0.03 sec)