Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL संग्रहित प्रक्रियाओं के साथ अद्यतन क्वेरी चलाने के लिए चयन परिणामसेट का उपयोग करना

DELIMITER //
CREATE PROCEDURE checkUser(IN in_email VARCHAR(80), IN in_password VARCHAR(50))
BEGIN
    DECLARE tempId INT DEFAULT 0;
    DECLARE tempName VARCHAR(50) DEFAULT NULL;
    DECLARE done INT DEFAULT 0;

    DECLARE cur CURSOR FOR 
        SELECT id, name FROM users WHERE email = in_email AND password = in_password;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

    OPEN cur;

    REPEAT
        FETCH cur INTO tempId, tempName;
        UPDATE users SET online = 1 WHERE id = tempId;
    UNTIL done  = 1 END REPEAT;
    CLOSE cur;

    SELECT tempName;
END //
DELIMITER ;

एनबी:मैंने इसका परीक्षण नहीं किया है। यह संभव है कि MySQL उस तालिका के विरुद्ध अद्यतन पसंद नहीं करता जिसके लिए वर्तमान में एक कर्सर खुला है।

पुनश्च:आपको पासवर्ड कैसे संगृहीत कर रहे हैं पर पुनर्विचार करना चाहिए .

RETURN . के बारे में फिर से टिप्पणी करें बनाम OUT बनाम परिणाम सेट:

RETURN केवल संग्रहीत कार्यों में उपयोग किया जाता है, संग्रहीत कार्यविधियों में नहीं। संग्रहीत फ़ंक्शन का उपयोग तब किया जाता है जब आप रूटीन को किसी अन्य SQL अभिव्यक्ति में कॉल करना चाहते हैं।

SELECT LCASE( checkUserFunc(?, ?) );

आप एक OUT का उपयोग कर सकते हैं पैरामीटर, लेकिन आपको उस पैरामीटर के रूप में पास करने के लिए पहले उपयोगकर्ता चर घोषित करना होगा। और फिर आपको किसी भी तरह से उसका मान प्राप्त करने के लिए उस उपयोगकर्ता चर का चयन करना होगा।

SET @outparam = null;
CALL checkUser(?, ?, @outparam);
SELECT @outparam;

संग्रहित प्रक्रिया से परिणाम सेट लौटाते समय, SELECT . का उपयोग करना सबसे आसान होता है सवाल।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. त्रुटि 1045 (28000):उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' के लिए प्रवेश निषेध (पासवर्ड का उपयोग करके:हाँ)

  2. मैं वाईआई में एनयूएलएल की तारीख कैसे निर्धारित कर सकता हूं?

  3. फ़ाइल सामग्री को MySQL तालिका के कॉलम में डालें

  4. MySQL, Grails 2 ऐप के लिए लंबे समय तक निष्क्रियता के दौरान पूल किए गए कनेक्शन को जीवित रखने का सही तरीका (या उन्हें समय देना और ताजा प्राप्त करना)

  5. मिला:बिट, अपेक्षित:हाइबरनेट 4 अपग्रेड के बाद बूलियन