天天看點

MySQL存儲過程使用表名做參數

版權聲明:本文為部落客chszs的原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/chszs/article/details/5818363

MySQL存儲過程使用表名做參數

原創文章,chszs版權所有!

如要轉發,請聯系chszs!

盜貼行為将受起訴!

MySQL存儲過程使用表名做參數動态建立表的例子。

一同學向我請教在MySQL的存儲過程中,如何使用表名做參數動态建立表。

這個問題在MySQL 5.0以前非常麻煩,但是在MySQL 5.0.13版之後,由于引入了PREPARE語句,一切變得簡單了。

此問題在網上搜尋的文章一般都是錯誤的!

例子如下(已驗證):

DROP PROCEDURE IF EXISTS `newtable`;

CREATE PROCEDURE `newtable`(IN tname varchar(64))

BEGIN

SET @sqlcmd = CONCAT('CREATE TABLE ', tname, ' (id int NOT NULL AUTO_INCREMENT, name varchar(64) DEFAULT NULL, PRIMARY KEY (`id`))');

PREPARE stmt FROM @sqlcmd;

EXECUTE stmt;

DEALLOCATE PREPARE stmt;

END;

call newtable('abc');