MySQL में स्टोर्ड प्रोसीजर पैरामीटर्स की शुरुआत में @ चरित्र का उपयोग नहीं किया जा सकता। @ चरित्र केवल यूजर-डिफाइंड वेरिएबल्स (उपयोगकर्ता-परिभाषित चर) के लिए आरक्षित है।
सही सिंटैक्स
यूजर-डिफाइंड वेरिएबल के लिए @ का उपयोग
SET @yourVariableName = yourValue;
स्टोर्ड प्रोसीजर में सही कार्यान्वयन
mysql> DELIMITER //
mysql> CREATE PROCEDURE declare_Variable(IN StudentName VARCHAR(100))
BEGIN
SET @Name = StudentName; -- @ का उपयोग यूजर वेरिएबल के लिए
SELECT @Name;
END //
Query OK, 0 rows affected (0.12 sec)
mysql> DELIMITER ;
स्टोर्ड प्रोसीजर कॉल करें
mysql> CALL declare_Variable('John Smith');
+------------+
| @Name |
+------------+
| John Smith |
+------------+
1 row in set (0.00 sec)
मुख्य अंतर
| पैरामीटर (कोई @ नहीं) | यूजर वेरिएबल (@ के साथ) |
|---|---|
IN StudentName VARCHAR(100) | SET @Name = 'value' |
| प्रोसीजर हेडर में घोषित | सत्र के लिए वैश्विक |
| केवल प्रोसीजर के भीतर दृश्य | सत्र में कहीं भी पहुंच योग्य |
सर्वोत्तम अभ्यास
- स्टोर्ड प्रोसीजर पैरामीटर्स के लिए:
IN param_name TYPE(बिना @) - सत्र-स्तरीय चर के लिए:
@var_name - स्थानीय चर के लिए (केवल BEGIN...END ब्लॉक में):
DECLARE var_name TYPE