Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL स्टोर्ड प्रोसीजर में "not a variable" त्रुटि कैसे ठीक करें?

आउटपुट पैरामीटर के लिए यूजर-डिफाइंड वेरिएबल का उपयोग

स्टोर्ड प्रोसीजर से मान वापस पाने के लिए @ प्रीफिक्स वाले यूजर-डिफाइंड वेरिएबल का उपयोग करें:

CALL yourStoredProcedureName(param1, param2, ..., @yourVariableName);
SELECT @yourVariableName;

उदाहरण: टेबल और स्टोर्ड प्रोसीजर बनाना

mysql> CREATE TABLE StoredProcedureDemo (
    -> Id INT,
    -> Name VARCHAR(10)
    -> );
mysql> INSERT INTO StoredProcedureDemo VALUES(1, 'John');
mysql> INSERT INTO StoredProcedureDemo VALUES(2, 'Carol');

आउटपुट पैरामीटर वाला स्टोर्ड प्रोसीजर

mysql> DELIMITER //
mysql> CREATE PROCEDURE Update_table(
    -> IN Id INT, 
    -> IN Name VARCHAR(20), 
    -> OUT message VARCHAR(50)
    -> )
    -> BEGIN
    ->     SET message = 'DATABASE HAS BEEN UPDATED';
    ->     INSERT INTO StoredProcedureDemo VALUES (Id, Name);
    -> END;
    -> //
mysql> DELIMITER ;

प्रोसीजर कॉल करना और आउटपुट प्राप्त करना

mysql> CALL Update_table(3, 'Larry', @UserMessage);
Query OK, 1 row affected

mysql> SELECT @UserMessage;

आउटपुट:

+---------------------------+
| @UserMessage              |
+---------------------------+
| DATABASE HAS BEEN UPDATED |
+---------------------------+

टेबल में नया रिकॉर्ड वेरीफाई करना

mysql> SELECT * FROM StoredProcedureDemo;
+------+-------+
| Id   | Name  |
+------+-------+
|    1 | John  |
|    2 | Carol |
|    3 | Larry |
+------+-------+

मुख्य बिंदु: आउटपुट पैरामीटर के लिए हमेशा @variable_name फॉर्मेट में यूजर-डिफाइंड वेरिएबल का उपयोग करें, लोकल वेरिएबल का नहीं।

  1. - MySQL स्टोर्ड प्रोसीजर के वेरिएबल में कॉलम का मान स्टोर करें

    समाधान स्टोर्ड प्रोसीजर में DECLARE से वेरिएबल घोषित करें, SELECT ... INTO से मान असाइन करें। उदाहरण टेबल बनाएं: INSERT INTO DemoTable2034 (StudentName, StudentAge) VALUES (Chris, 23), (David, 21), (Robert, 25), (Mike, 19); स्टोर्ड प्रोसीजर बनाएं DELIMITER ; कॉल करें CALL select_into_variable(

  1. - MySQL स्टोर्ड प्रोसीजर के अंदर डायनामिक SQL क्वेरी कैसे लागू करें

    समाधान PREPARE, EXECUTE, DEALLOCATE PREPARE स्टेटमेंट का उपयोग करें। उदाहरण टेबल बनाएं: INSERT INTO DemoTable2033 (Name) VALUES (Chris), (Bob), (David), (Mike); डायनामिक SQL के साथ प्रोसीजर DELIMITER ; कॉल करें CALL dynamic_query(); +----+-------+ | Id | Name | +----+-------+ | 3 | David | +

  1. - MySQL में आरक्षित कीवर्ड (जैसे groups) से टेबल बनाने पर सिंटैक्स एरर और समाधान

    समस्या groups MySQL आरक्षित कीवर्ड है। बिना बैकटिक्स के टेबल बनाने पर एरर: create table groups (id int, name varchar(40)); ERROR 1064 (42000): You have an error in your SQL syntax near groups (id int, name varchar(40)) at line 1 समाधान: बैकटिक्स (`) का उपयोग create table `groups` (id int, name v