MySQL-এ একটি স্টোরড প্রোসিডিউর থেকে ইনপুট প্যারামিটার ভিত্তিক করে শর্তসাপেক্ষভাবে (IF) অন্য স্টোরড প্রোসিডিউর কল করা যায়।
সিনট্যাক্স
CREATE PROCEDURE mainProc(IN input INT)
BEGIN
IF input > 100 THEN
CALL proc1();
ELSE
CALL proc2();
END IF;
END
সম্পূর্ণ উদাহরণ
১. প্রথম প্রোসিডিউর তৈরি করুন
mysql> DELIMITER //
mysql> CREATE PROCEDURE Hello_Stored_Procedure()
-> BEGIN
-> SELECT 'Hello World!!!';
-> END //
Query OK, 0 rows affected (0.18 sec)
২. দ্বিতীয় প্রোসিডিউর তৈরি করুন
mysql> CREATE PROCEDURE Hi_Stored_Procedure()
-> BEGIN
-> SELECT 'Hi!!!';
-> END //
Query OK, 0 rows affected (0.17 sec)
৩. মেইন প্রোসিডিউর তৈরি করুন (IF লজিকসহ)
mysql> CREATE PROCEDURE test(IN input INT)
-> BEGIN
-> IF input > 100 THEN
-> CALL Hello_Stored_Procedure();
-> ELSE
-> CALL Hi_Stored_Procedure();
-> END IF;
-> END //
Query OK, 0 rows affected (0.18 sec)
৪. প্রোসিডিউর কল করুন
mysql> DELIMITER ;
mysql> CALL test(110);
৫. ফলাফল
+----------------+
| Hello World!!! |
+----------------+
| Hello World!!! |
+----------------+
1 row in set (0.00 sec)
মূল পয়েন্ট:
DELIMITER //- স্টেটমেন্ট টার্মিনেটর বদলিয়ে প্রোসিডিউর বডিতে ; ব্যবহার করা যায়।CALL proc_name()- প্রোসিডিউর কল করার সিনট্যাক্স।IF ... THEN ... ELSE ... END IF;- কন্ট্রোল ফ্লো (সেমিকোলন লাগে END IF-এ)۔- ইনপুট প্যারামিটার:
IN(ডিফল্ট),OUT,INOUT। - নেস্টেড CALL সমর্থিত (রিকার্সিভ CALL-ও সম্ভব, কিন্তু MAX_SP_RECURSION_DEPTH সেট করতে হয়)।