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
; ये "सत्र चर" सत्र-विशिष्ट उपयोगकर्ता-परिभाषित चर से असंबंधित हैं।)