MySQL স্টোরড প্রসিডিউরে ডাইনামিক WHERE IN() ক্লজ বাস্তবায়নের জন্য প্রিপেয়ার্ড স্টেটমেন্ট (Prepared Statement) ব্যবহার করা হয়। এটি কমা-সেপারেটেড মান গ্রহণ করে।
টেবিল এবং ডেটা
CREATE TABLE DemoTable (
Id INT,
Name VARCHAR(20)
);
INSERT INTO DemoTable VALUES(100,'Chris');
INSERT INTO DemoTable VALUES(101,'Bob');
INSERT INTO DemoTable VALUES(102,'David');
স্টোরড প্রসিডিউর
DELIMITER //
CREATE PROCEDURE whereInDemo(IN input VARCHAR(100))
BEGIN
SET @Query = 'SELECT Name FROM DemoTable';
SET @Query = CONCAT(@Query, ' WHERE Id IN (', input, ')');
PREPARE stmt FROM @Query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END //
DELIMITER ;
কল করুন
CALL whereInDemo('100,102');
ফলাফল
+-------+
| Name |
+-------+
| Chris |
| David |
+-------+
গুরুত্বপূর্ণ নোট
CONCAT()— কুয়েরি স্ট্রিং তৈরি করেPREPARE,EXECUTE,DEALLOCATE PREPARE— প্রিপেয়ার্ড স্টেটমেন্ট লাইফসাইকেল- সিকিউরিটি সতর্কতা: ইনপুট স্যানিটাইজ না করলে SQL ইনজেকশন হয়েছে। প্রোডাকশনে প্যারামিটারাইজড কুয়েরি বা ভ্যালিডেশন ব্যবহার করুন