MySQL-এ স্টোরড প্রসিডিউরের ভেতরে ডাইনামিক SQL চালাতে PREPARE, EXECUTE, DEALLOCATE PREPARE স্টেটমেন্টগুলো ব্যবহার করা হয়।
টেবিল ও ডেটা
mysql> CREATE TABLE DemoTable2033 (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name VARCHAR(20)
-> );
Query OK, 0 rows affected (1.61 sec)
mysql> INSERT INTO DemoTable2033 (Name) VALUES ('Chris'), ('Bob'), ('David'), ('Mike');
mysql> SELECT * FROM DemoTable2033; +----+-------+ | Id | Name | +----+-------+ | 1 | Chris | | 2 | Bob | | 3 | David | | 4 | Mike | +----+-------+
ডাইনামিক SQL সহ প্রসিডিউর
mysql> DELIMITER //
mysql> CREATE PROCEDURE dynamic_query()
-> BEGIN
-> SET @query = CONCAT("SELECT * FROM DemoTable2033 WHERE Id=3");
-> PREPARE st FROM @query;
-> EXECUTE st;
-> DEALLOCATE PREPARE st;
-> END //
Query OK, 0 rows affected (0.13 sec)
mysql> DELIMITER ;
কল করা
mysql> CALL dynamic_query(); +----+-------+ | Id | Name | +----+-------+ | 3 | David | +----+-------+
ব্যাখ্যা: @query স্ট্রিং হিসেবে কোয়ারি বানায়। PREPARE সেটি কম্পাইল করে। EXECUTE চালায়। DEALLOCATE PREPARE মেমরি মুক্ত করে। প্যারামিটারাইজড কোয়ারির জন্য ? প্লেসহোল্ডার ব্যবহার করা যায়।