स्टोर्ड प्रोसीजर का उपयोग
MySQL में संख्याओं की रेंज (जैसे 10 से 1 तक) जनरेट करके टेबल में डालने के लिए स्टोर्ड प्रोसीजर का उपयोग करें। MySQL में GENERATE_SERIES() जैसा बिल्ट-इन फ़ंक्शन नहीं है (PostgreSQL के विपरीत)।
चरण-दर-चरण उदाहरण: 10 से 1 तक
1. टेबल बनाएं
mysql> CREATE TABLE GeneratingNumbersDemo (
-> Number INT
-> );
Query OK, 0 rows affected (0.55 sec)
2. स्टोर्ड प्रोसीजर बनाएं
mysql> DELIMITER //
mysql> CREATE PROCEDURE Stored_ProceduretoGenerateNumbersDemo()
-> BEGIN
-> DECLARE start INT DEFAULT 10;
-> WHILE start > 0 DO
-> INSERT INTO GeneratingNumbersDemo VALUES (start);
-> SET start = start - 1;
-> END WHILE;
-> END //
Query OK, 0 rows affected (0.12 sec)
mysql> DELIMITER ;
3. प्रोसीजर कॉल करें
mysql> CALL Stored_ProceduretoGenerateNumbersDemo();
Query OK, 1 row affected (0.85 sec)
4. परिणाम देखें
mysql> SELECT * FROM GeneratingNumbersDemo;
+--------+
| Number |
+--------+
| 10 |
| 9 |
| 8 |
| 7 |
| 6 |
| 5 |
| 4 |
| 3 |
| 2 |
| 1 |
+--------+
10 rows in set (0.00 sec)
पैरामीटरीकृत संस्करण (पुन: प्रयोज्य)
DELIMITER //
CREATE PROCEDURE GenerateRange(IN start_val INT, IN end_val INT)
BEGIN
DECLARE i INT DEFAULT start_val;
WHILE i <= end_val DO
INSERT INTO GeneratingNumbersDemo VALUES (i);
SET i = i + 1;
END WHILE;
END //
DELIMITER ;
-- उपयोग:
CALL GenerateRange(1, 100); -- 1 से 100 तक
CALL GenerateRange(50, 100); -- 50 से 100 तक
वैकल्पिक: रिकर्सिव CTE (MySQL 8.0+)
MySQL 8.0+ में स्टोर्ड प्रोसीजर के बिना:
WITH RECURSIVE num_range AS (
SELECT 1 AS n
UNION ALL
SELECT n + 1 FROM num_range WHERE n < 10
)
SELECT n FROM num_range;
+------+
| n |
+------+
| 1 |
| 2 |
| ... |
| 10 |
+------+
सिफारिश: MySQL 8.0+ के लिए CTE सरल और तेज है। पुराने संस्करणों के लिए स्टोर्ड प्रोसीजर उपयोग करें।