স্টোরড প্রোসিডিউরের মধ্যে ডাইনামিক SQL এবং প্রিপেয়ারড স্টেটমেন্ট ব্যবহার করে প্যারামিটার ভিত্তিক নতুন টেবিল তৈরি করা যায়।
টেবিল ও ডেটা তৈরি:
mysql> CREATE TABLE DemoTable1973 (
StudentId INT,
StudentName VARCHAR(20)
);
mysql> INSERT INTO DemoTable1973 VALUES
(101,'Chris'), (102,'John Doe'), (103,'David'), (104,'John Smith');
স্টোরড প্রোসিডিউর তৈরি:
mysql> DELIMITER //
mysql> CREATE PROCEDURE demo_create(IN newTableName VARCHAR(20), IN tbl VARCHAR(20))
BEGIN
DROP TABLE IF EXISTS newTableName;
SET @query = CONCAT('CREATE TABLE ', newTableName, ' AS SELECT * FROM DemoTable1973 WHERE StudentName LIKE ''%', tbl, '%''');
PREPARE ps FROM @query;
EXECUTE ps;
END //
mysql> DELIMITER ;
প্রোসিডিউর কল করা:
mysql> CALL demo_create('newTableName', 'John');
ফলাফল:
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 102 | John Doe | | 104 | John Smith | +-----------+-------------+
মূল পয়েন্ট
CONCATদিয়ে ডাইনামিক কোয়েরি তৈরি করা হয়েছে।PREPAREএবংEXECUTEদিয়ে রান করা হয়েছে।LIKE '%John%'প্যাটার্ন ম্যাচিংয়ের জন্য ব্যবহার করা হয়েছে।- টেবিল নামও প্যারামিটার হিসেবে নেওয়া হয়েছে।
সতর্কতা: SQL ইনজেকশন এড়াতে ইনপুট ভ্যালিডেশন জরুরি।