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

MySQL:@variable बनाम चर। क्या फर्क पड़ता है?

MySQL की एक अवधारणा है उपयोगकर्ता-परिभाषित चर

वे शिथिल रूप से टाइप किए गए चर हैं जिन्हें किसी सत्र में कहीं आरंभ किया जा सकता है और सत्र समाप्त होने तक उनका मान बना रहता है।

वे एक @ . के साथ जुड़े हुए हैं साइन इन करें, इस तरह:@var

आप इस वेरिएबल को SET . के साथ इनिशियलाइज़ कर सकते हैं कथन या क्वेरी के अंदर:

SET @var = 1

SELECT @var2 := 2

जब आप MySQL में एक संग्रहीत कार्यविधि विकसित करते हैं, तो आप इनपुट पैरामीटर पास कर सकते हैं और स्थानीय चर घोषित कर सकते हैं:

DELIMITER //

CREATE PROCEDURE prc_test (var INT)
BEGIN
    DECLARE  var2 INT;
    SET var2 = 1;
    SELECT  var2;
END;
//

DELIMITER ;

ये चर किसी भी उपसर्ग के साथ नहीं जोड़े गए हैं।

एक प्रक्रिया चर और एक सत्र-विशिष्ट उपयोगकर्ता-परिभाषित चर के बीच का अंतर यह है कि एक प्रक्रिया चर को NULL में पुन:प्रारंभ किया जाता है हर बार प्रक्रिया को कॉल किया जाता है, जबकि सत्र-विशिष्ट चर नहीं है:

CREATE PROCEDURE prc_test ()
BEGIN
    DECLARE var2 INT DEFAULT 1;
    SET var2 = var2 + 1;
    SET @var2 = @var2 + 1;
    SELECT  var2, @var2;
END;

SET @var2 = 1;

CALL prc_test();

var2  @var2
---   ---
2     2


CALL prc_test();

var2  @var2
---   ---
2     3


CALL prc_test();

var2  @var2
---   ---
2     4

जैसा कि आप देख सकते हैं, var2 (प्रक्रिया चर) हर बार प्रक्रिया को बुलाए जाने पर पुन:प्रारंभ किया जाता है, जबकि @var2 (सत्र-विशिष्ट चर) नहीं है।

(उपयोगकर्ता-परिभाषित चरों के अलावा, MySQL भी कुछ पूर्वनिर्धारित "सिस्टम चर" हैं, जो "वैश्विक चर" हो सकते हैं जैसे @@global.port या "सत्र चर" जैसे @@session.sql_mode; ये "सत्र चर" सत्र-विशिष्ट उपयोगकर्ता-परिभाषित चर से असंबंधित हैं।)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में INSERT और UPDATE में क्या अंतर हैं?

  2. MySQL को SQLite में बदलें

  3. जावा को एक MySQL डेटाबेस से कनेक्ट करें

  4. मॉनिटरिंग Percona XtraDB क्लस्टर - प्रमुख मेट्रिक्स

  5. MySQL ऑटोइनक्रिकमेंट कॉलम 10 से कूदता है- क्यों?