স্টোরড প্রোসিডিউরের ভেতর থেকে ডাইনামিক SQL ব্যবহার করে SHOW CREATE TABLE চালানো যায়।
টেবিল তৈরি:
mysql> CREATE TABLE DemoTable2011 (
StudentId INT NOT NULL AUTO_INCREMENT,
StudentName VARCHAR(20),
StudentAge INT,
StudentCountryName VARCHAR(20),
PRIMARY KEY(StudentId)
);
স্টোরড প্রোসিডিউর (টেবিল নাম প্যারামিটার হিসেবে):
mysql> DELIMITER //
mysql> CREATE PROCEDURE test_show_create_demo(IN table_name VARCHAR(100))
BEGIN
SET @query = CONCAT("SHOW CREATE TABLE ", table_name);
PREPARE st FROM @query;
EXECUTE st;
DEALLOCATE PREPARE st;
END //
mysql> DELIMITER ;
প্রোসিডিউর কল:
mysql> CALL test_show_create_demo('DemoTable2011');
আউটপুট (টেবিল ডেফিনিশন):
+---------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +---------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | DemoTable2011 | CREATE TABLE `demotable2011` ( `StudentId` int(11) NOT NULL AUTO_INCREMENT, `StudentName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `StudentAge` int(11) DEFAULT NULL, `StudentCountryName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`StudentId`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci | +---------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
ব্যাখ্যা
CONCAT("SHOW CREATE TABLE ", table_name)— ডাইনামিক কোয়েরি স্ট্রিং তৈরি।PREPARE ... EXECUTE ... DEALLOCATE PREPARE— প্রিপেয়ারড স্টেটমেন্ট লাইফসাইকেল।DEALLOCATE PREPARE— স্টেটমেন্ট রিলিজ করা (মেমোরি লিক এড়াতে)।
ব্যবহারিক পরিস্থিতি
- মাইগ্রেশন স্ক্রিপ্টে টেবিল স্কিমা এক্সপোর্ট করতে।
- ডাইনামিক্যালি টেবিল মেটাডেটা চেক করতে।
- অ্যাডমিন টুলে টেবিল স্ট্রাকচার দেখাতে।