এই এরর মেসেজ এড়াতে আউটপুট প্যারামিটার হিসেবে ভেরিয়েবল ব্যবহার করতে হয়, যেটির আগে @ সিম্বল থাকে। সিনট্যাক্স:
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)