স্টোরড প্রোসিডিউরে ইনপুট প্যারামিটার নিয়ে IN() ক্লজ ব্যবহার করে নির্দিষ্ট রেকর্ড বের করা যায়।
টেবিল ও ডেটা:
mysql> CREATE TABLE DemoTable2004 (UserId VARCHAR(20), UserName VARCHAR(20));
mysql> INSERT INTO DemoTable2004 VALUES
('John_123','John'), ('23456_Carol','Carol'), ('111_Bob','Bob');
স্টোরড প্রোসিডিউর তৈরি:
mysql> DELIMITER //
mysql> CREATE PROCEDURE test_of_in(IN uId VARCHAR(20))
BEGIN
SELECT * FROM DemoTable2004 WHERE UserId IN(uId);
END //
mysql> DELIMITER ;
প্রোসিডিউর কল:
mysql> CALL test_of_in('23456_Carol');
আউটপুট:
+-------------+----------+ | UserId | UserName | +-------------+----------+ | 23456_Carol | Carol | +-------------+----------+
ব্যাখ্যা
IN(uId)— একক মান হলে=সমান কাজ করে।- একাধিক মান পাস করতে হলে:
IN('val1','val2',...)বা ডাইনামিক SQL ব্যবহার করুন। DELIMITER //— প্রোসিডিউর বডিতে সেমিকোলন ব্যবহার করার জন্য।
ডাইনামিক IN লিস্ট উদাহরণ
CREATE PROCEDURE test_in_list(IN ids TEXT)
BEGIN
SET @q = CONCAT('SELECT * FROM DemoTable2004 WHERE UserId IN (', ids, ')');
PREPARE st FROM @q;
EXECUTE st;
DEALLOCATE PREPARE st;
END;
// কল: CALL test_in_list("'John_123','111_Bob'");
সতর্কতা: SQL ইনজেকশন প্রতিরোধে ইনপুট স্যানিটাইজ করুন।