কম্পিউটার টিউটোরিয়াল

MySQL Stored Procedure-এ "not a variable or NEW pseudo-variable" এরর সমাধান

এই এরর মেসেজ এড়াতে আউটপুট প্যারামিটার হিসেবে ভেরিয়েবল ব্যবহার করতে হয়, যেটির আগে @ সিম্বল থাকে। সিনট্যাক্স:

CALL yourStoredProcedureName(yourParameter1, yourParameter2, ..., @yourVariableName);

ভেরিয়েবলের মান দেখতে SELECT ব্যবহার করি:

SELECT @yourVariableName;

উদাহরণ

টেবিল তৈরি এবং ডেটা ইনসার্ট:

mysql> create table StoredProcedureDemo (
    -> Id int,
    -> Name varchar(10)
    -> ); Query OK, 0 rows affected (1.20 sec)
mysql> insert into StoredProcedureDemo values(1,'John'); Query OK, 1 row affected (0.31 sec)
mysql> insert into StoredProcedureDemo values(2,'Carol'); Query OK, 1 row affected (0.19 sec)

স্টোরড প্রসিডিউর তৈরি (আউটপুট প্যারামিটার সহ):

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;
    -> //
Query OK, 0 rows affected (0.67 sec)
mysql> DELIMITER ;

প্রসিডিউর কল করি (আউটপুট প্যারামিটার হিসেবে @UserMessage ব্যবহার):

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

ভেরিয়েবলের মান দেখি:

mysql> select @UserMessage;

আউটপুট:

+---------------------------+
| @UserMessage              |
+---------------------------+
| DATABASE HAS BEEN UPDATED |
+---------------------------+
1 row in set (0.00 sec)

টেবিল চেক করি (নতুন রেকর্ড ইনসার্ট হয়েছে):

mysql> select *from StoredProcedureDemo;

ফলাফল:

+------+-------+
| Id   | Name  |
+------+-------+
|    1 | John  |
|    2 | Carol |
|    3 | Larry |
+------+-------+
3 rows in set (0.00 sec)
  1. MySQL 저장 프로시저에서 매개변수 NULL 또는 빈 문자열 체크하기

  2. MySQL-এ স্টোরড প্রসিডিউরের ভেরিয়েবলে কলামের মান সংরক্ষণ করা

  3. MySQL-এ স্টোরড প্রসিডিউরে ডাইনামিক SQL কোয়ারি ইমপ্লিমেন্ট করা

  4. MySQL-এ রিজার্ভড কীওয়ার্ড (groups) দিয়ে টেবিল তৈরি করার সমস্যা ও সমাধান