Sử dụng biến cục bộ DECLARE trong stored procedure để gán giá trị tham số vào LIMIT (MySQL không cho phép biến trực tiếp trong LIMIT cũ, cần biến).
Ví dụ minh họa
Tạo bảng:
mysql> CREATE TABLE DemoTable1368 (ClientId INT, ClientName VARCHAR(20));
Chèn dữ liệu (6 hàng):
mysql> INSERT INTO DemoTable1368 VALUES(101, 'Adam'), (102, 'Bob'), (103, 'John'), (104, 'Sam'), (105, 'Mike'), (106, 'Carol');
Tạo procedure nhận tham số limit:
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 ;
Gọi procedure lấy 3 hàng đầu:
mysql> CALL limit_Demo(3);
Kết quả:
+----------+------------+ | ClientId | ClientName | +----------+------------+ | 101 | Adam | | 102 | Bob | | 103 | John | +----------+------------+
Lưu ý:
- MySQL 8.0+ cho phép
LIMIT @vartrực tiếp không cần DECLARE trung gian. LIMITkhông hỗ trợOFFSETbằng biến trong phiên bản cũ - cầnPREPARE/ dynamic SQL.- Procedure chạy với quyền DEFINER - người gọi chỉ cần quyền EXECUTE.