Chinaunix首页 | 论坛 | 博客
  • 博客访问: 728898
  • 博文数量: 178
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1507
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-27 23:20
文章分类

全部博文(178)

文章存档

2015年(58)

2014年(121)

我的朋友

分类: Mysql/postgreSQL

2014-09-10 16:29:56

原创文章,chszs版权所有!
如要转发,请联系chszs!
盗贴行为将受起诉!

MySQL存储过程使用表名做参数动态创建表的例子。

一同学向我请教在MySQL的存储过程中,如何使用表名做参数动态创建表。

这个问题在MySQL 5.0以前非常麻烦,但是在MySQL 5.0.13版之后,由于引入了PREPARE语句,一切变得简单了。

此问题在网上搜索的帖子一般都是错误的!

例子如下(已验证):

  1. DROP PROCEDURE IF EXISTS `newtable`;  
  2. CREATE PROCEDURE `newtable`(IN tname varchar(64))  
  3. BEGIN  
  4. SET @sqlcmd = CONCAT('CREATE TABLE ', tname, ' (id int NOT NULL AUTO_INCREMENT, name varchar(64) DEFAULT NULL, PRIMARY KEY (`id`))');  
  5. PREPARE stmt FROM @sqlcmd;  
  6. EXECUTE stmt;  
  7. DEALLOCATE PREPARE stmt;  
  8. END;  
  9. call newtable('abc');  

阅读(837) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~