Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

स्टोर्ड प्रोसीजर में वेरिएबल के साथ LIMIT एक्सप्रेशन

PREPARED STATEMENT से डायनामिक LIMIT

MySQL स्टोर्ड प्रोसीजर में वेरिएबल को LIMIT क्लॉज में सीधे उपयोग नहीं कर सकते। PREPARED STATEMENT का उपयोग करें।

टेबल और डेटा (14 पंक्तियाँ)

mysql> create table LimitWithStoredProcedure (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Name varchar(10)
    -> );
-- 14 नाम डाले गए: John, Chris, Maxwell, Bob, David, Carol, James, Jace, Robert, Mike, Sam, Peter, Ramit, Tony

स्टोर्ड प्रोसीजर: डायनामिक LIMIT

mysql> DELIMITER //
mysql> CREATE PROCEDURE Sp_limit(IN beg INTEGER, IN end INTEGER)
    -> BEGIN
    ->     PREPARE myStatement FROM "SELECT * FROM LimitWithStoredProcedure LIMIT ?, ?";
    ->     SET @beginning = beg;
    ->     SET @ending = end;
    ->     EXECUTE myStatement USING @beginning, @ending;
    ->     DEALLOCATE PREPARE myStatement;
    -> END //
Query OK, 0 rows affected (0.25 sec)
mysql> DELIMITER ;

प्रोसीजर कॉल: OFFSET 4, LIMIT 7

mysql> CALL Sp_limit(4, 7);

परिणाम (5वीं से 11वीं पंक्ति = 7 पंक्तियाँ)

+----+--------+
| Id | Name   |
+----+--------+
| 5  | David  |
| 6  | Carol  |
| 7  | James  |
| 8  | Jace   |
| 9  | Robert |
| 10 | Mike   |
| 11 | Sam    |
+----+--------+
7 rows in set

मुख्य बिंदु

  • PREPARE से SQL स्टेटमेंट तैयार करें (? प्लेसहोल्डर)
  • SET @var = value से वेरिएबल सेट करें
  • EXECUTE ... USING @var1, @var2 से निष्पादित करें
  • DEALLOCATE PREPARE से स्टेटमेंट मुक्त करें
  • LIMIT offset, count - पहला पैरामीटर ऑफसेट, दूसरा पंक्ति गिनती

नोट

MySQL 8.0+ में सीधे वेरिएबल LIMIT @offset, @count काम नहीं करता, PREPARED स्टेटमेंट आवश्यक है।

  1. MySQL वर्कबेंच का उपयोग करके स्टोर्ड प्रोसीजर कैसे बनाएं? MySQL वर्कबेंच का उपयोग करके स्टोर्ड प्रोसीजर कैसे बनाएं?

    आइए पहले एक स्टोर्ड प्रोसीजर बनाते हैं। MySQL वर्कबेंच का उपयोग करके स्टोर्ड प्रोसीजर बनाने का क्वेरी: use business; DELIMITER // DROP PROCEDURE IF EXISTS SP_GETMESSAGE; CREATE PROCEDURE SP_GETMESSAGE() BEGIN DECLARE MESSAGE VARCHAR(100); SET MESSAGE=HELLO; SELECT CONCAT(MESSAGE, ,MYSQL!!!!); END //

  1. - MySQL में स्टोर्ड प्रोसीजर में DECLARE से वेरिएबल कैसे बनाएं?

    MySQL में स्टोर्ड प्रोसीजर के अंदर लोकल वेरिएबल घोषित करने के लिए DECLARE स्टेटमेंट का उपयोग करें। ये वेरिएबल केवल प्रोसीजर के BEGIN...END ब्लॉक के भीतर दृश्यमान होते हैं और इंटरमीडिएट गणना, अस्थायी मान स्टोर करने के लिए उपयोगी हैं। सिंटैक्स DECLARE variable_name data_type [DEFAULT default_value];

  1. - MySQL स्टोर्ड प्रोसीजर के वेरिएबल में कॉलम का मान स्टोर करें

    समाधान स्टोर्ड प्रोसीजर में DECLARE से वेरिएबल घोषित करें, SELECT ... INTO से मान असाइन करें। उदाहरण टेबल बनाएं: INSERT INTO DemoTable2034 (StudentName, StudentAge) VALUES (Chris, 23), (David, 21), (Robert, 25), (Mike, 19); स्टोर्ड प्रोसीजर बनाएं DELIMITER ; कॉल करें CALL select_into_variable(