समाधान
PREPARE, EXECUTE, DEALLOCATE PREPARE स्टेटमेंट का उपयोग करें।
उदाहरण
टेबल बनाएं:
mysql> CREATE TABLE DemoTable2033 (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name VARCHAR(20)
-> );
mysql> INSERT INTO DemoTable2033 (Name) VALUES ('Chris'), ('Bob'), ('David'), ('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 //
mysql> DELIMITER ;
कॉल करें
mysql> CALL dynamic_query(); +----+-------+ | Id | Name | +----+-------+ | 3 | David | +----+-------+
चरण: 1) डायनामिक क्वेरी स्ट्रिंग बनाएं, 2) PREPARE से स्टेटमेंट तैयार करें, 3) EXECUTE से चलाएं, 4) DEALLOCATE PREPARE से मुक्त करें।