স্ট্রোড প্রসিডিউর থেকে মান রিটার্ন করতে ইউজার-ডিফাইন্ড সেশন-স্পেসিফিক ভেরিয়েবল ব্যবহার করতে হয়। ভেরিয়েবল নামের আগে @ সিম্বল যোগ করুন।
উদাহরণস্বরূপ, valido ভেরিয়েবলের জন্য @ সিম্বল ব্যবহার করা হলো। এর সিনট্যাক্স নিচে দেওয়া হলো:
SELECT @valido;
যখনই সিলেক্ট স্টেটমেন্ট ব্যবহার করবেন, তখন @anyVariableName ব্যবহার করতে হবে। সিনট্যাক্স নিচে দেওয়া হলো:
SELECT @anyVariableName;
স্ট্রোড প্রসিডিউর থেকে মান রিটার্ন করার ডেমো নিচে দেওয়া হলো। স্ট্রোড প্রসিডিউর তৈরির কোয়েরি:
mysql> create procedure ReturnValueFrom_StoredProcedure -> ( -> In num1 int, -> In num2 int, -> out valido int -> ) -> Begin -> IF (num1> 4 and num2 > 5) THEN -> SET valido = (num1+num2); -> ELSE -> SET valido = (num1-num2); -> END IF; -> select @valido; -> end // Query OK, 0 rows affected (0.32 sec) mysql> DELIMITER ;
CALL কমান্ড দিয়ে স্ট্রোড প্রসিডিউর কল করা যাক। কোয়েরিটি হলো:
mysql> call ReturnValueFrom_StoredProcedure(10,6,@TotalSum); +---------+ | @valido | +---------+ | NULL | +---------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec)
এখন স্ট্রোড প্রসিডিউরের ফলাফল চেক করতে সিলেক্ট স্টেটমেন্ট ব্যবহার করা যাক। কোয়েরিটি হলো:
mysql> select @TotalSum;
আউটপুট নিচে দেওয়া হলো:
+-----------+ | @TotalSum | +-----------+ | 16 | +-----------+ 1 row in set (0.00 sec)
দ্বিতীয় কল দুটি মানের পার্থক্যের জন্য। স্ট্রোড প্রসিডিউর কল করা যাক।
mysql> call ReturnValueFrom_StoredProcedure(4,2,@TotalDiff); +---------+ | @valido | +---------+ | NULL | +---------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec)
ইউজার-ডিফাইন্ড সেশন-স্পেসিফিক ভেরিয়েবল দিয়ে ফলাফল চেক করা যাক। কোয়েরিটি হলো:
mysql> select @TotalDiff;
আউটপুট নিচে দেওয়া হলো:
+------------+ | @TotalDiff | +------------+ | 2 | +------------+ 1 row in set (0.00 sec)
ব্যাখ্যা: MySQL-এ স্ট্রোড প্রসিডিউর থেকে সরাসরি RETURN স্টেটমেন্ট দিয়ে মান রিটার্ন করা যায় না (ফাংশনে যায়)। এর পরিবর্তে OUT প্যারামিটার ব্যবহার করে এবং কল করার পর @variableName দিয়ে মানটি আউটপুট হিসেবে পাওয়া যায়। স্ট্রোড প্রসিডিউরterno SELECT @valido; লাইনটি আসলে অনावশ্যক, কারণ আউটপুট প্যারামিটারের মান কল করার পর সেশন ভেরিয়েবলে অ্যাসাইন হয়ে যায়।