आपका कोड ब्लॉक घोषित चर के दायरे को परिभाषित नहीं करता है। यदि किसी प्रक्रिया के भीतर, वे BEGIN
. के बीच में होने चाहिए और END
. उनके बिना, कथन DECLARE varLocalityName VARCHAR(50);
निष्पादित करने के लिए एक अमान्य कथन बन जाता है। यह कथन नीचे दिखाए गए कथनों के समतुल्य है:
mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2012-10-22 |
+----------------+
1 row in set (0.00 sec)
mysql> declare varLocalityName varchar(50);
ERROR 1064 (42000): You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near 'declare varLocalityName varchar(50)' at line 1
mysql>
या तो आपको घोषित करना चाहिए कीवर्ड के बिना सत्र चर DECLARE
या स्कोप्ड वेरिएबल्स का उपयोग करने के लिए संग्रहीत कार्यविधि के लिए परिभाषित सिंटैक्स का पालन करें।
उदाहरण 1 :सत्र चर का उपयोग करना:
mysql> set @x = null;
Query OK, 0 rows affected (0.00 sec)
mysql> select @x;
+------+
| @x |
+------+
| NULL |
+------+
1 row in set (0.00 sec)
mysql> delimiter $$
mysql> select current_date() into @x;
-> $$
Query OK, 1 row affected (0.02 sec)
mysql> select @x;
-> $$
+------------+
| @x |
+------------+
| 2012-10-22 |
+------------+
1 row in set (0.00 sec)
ध्यान दें कि आप एक प्रक्रिया के भीतर सत्र चर सेट/परिभाषित कर सकते हैं लेकिन DECLARE
. नहीं ।
उदाहरण 2 :प्रक्रिया के दायरे वाले चर का उपयोग करना:
mysql>
mysql> delimiter $$
mysql> create procedure some_x()
-> begin
-> declare varLocalityName varchar(50);
->
-> set @sessionDate = null;
-> select @sessionDate;
-> set @sessionDate = current_date();
-> select @sessionDate;
->
-> select varLocalityName;
-> end;
-> $$
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql>
mysql> call some_x();
+--------------+
| @sessionDate |
+--------------+
| NULL |
+--------------+
1 row in set (0.00 sec)
+--------------+
| @sessionDate |
+--------------+
| 2012-10-22 |
+--------------+
1 row in set (0.00 sec)
+-----------------+
| varLocalityName |
+-----------------+
| NULL |
+-----------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> select @sessionDate;
+--------------+
| @sessionDate |
+--------------+
| 2012-10-22 |
+--------------+
1 row in set (0.00 sec)
mysql> select varLocalityName;
ERROR 1054 (42S22): Unknown column 'varLocalityName' in 'field list'
mysql>
चर घोषणा और कार्यक्षेत्र भी देखें। .