Vì không có cái gọi là xrange, người ta có thể sử dụng một bảng riêng biệt được lưu trữ với số nguyên (như đã trả lời trước đó) hoặc chỉ cần thực hiện một thủ tục được lưu trữ để thực hiện công việc:
DROP PROCEDURE IF EXISTS xrange;
DELIMITER //
CREATE PROCEDURE xrange(x INT, y INT)
BEGIN
DECLARE i INT DEFAULT x;
CREATE TEMPORARY TABLE xrange_tmp (c1 INT);
WHILE i < y DO
INSERT INTO xrange_tmp VALUES (i);
SET i = i + 1;
END WHILE;
END;
//
Cách sử dụng:
CALL xrange(-2,10);
SELECT c1 FROM xrange_tmp;
DROP TABLE xrange_tmp;
Ở trên rõ ràng là sẽ chậm hơn so với việc tạo một bảng sẵn sàng với các số nguyên. Tuy nhiên, nó linh hoạt hơn.