उपयोगकर्ता-परिभाषित वेरिएबल (@var) और PREPARE/EXECUTE का उपयोग करके डायनामिक SQL बनाएं जहां टेबल नाम एक वेरिएबल है।
टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName VARCHAR(20)
);
Query OK, 0 rows affected (0.71 sec)
mysql> INSERT INTO DemoTable(StudentName) VALUES('Chris'),('David'),('Sam'),('Mike');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1 | Chris |
| 2 | David |
| 3 | Sam |
| 4 | Mike |
+-----------+-------------+
डायनामिक टेबल नाम के साथ प्रिपेयर्ड स्टेटमेंट
mysql> SET @tableName = 'DemoTable';
Query OK, 0 rows affected (0.04 sec)
mysql> SET @queryToSelectStudentName := CONCAT('SELECT StudentName FROM ', @tableName);
Query OK, 0 rows affected (0.28 sec)
mysql> PREPARE executeQuery FROM @queryToSelectStudentName;
Query OK, 0 rows affected (0.04 sec)
Statement prepared
mysql> EXECUTE executeQuery;
परिणाम:
+-------------+
| StudentName |
+-------------+
| Chris |
| David |
| Sam |
| Mike |
+-------------+
4 rows in set (0.00 sec)
नोट: PREPARE एक स्टेटमेंट हैंडल बनाता है। DEALLOCATE PREPARE executeQuery; के साथ साफ करें। टेबल/कॉलम नाम प्लेसहोल्डर (?) नहीं हो सकते; स्ट्रिंग संयोजन का उपयोग करें। सत्र समाप्त होने पर वेरिएबल गायब हो जाते हैं।