呵呵,
只能用动态 SQL看看我的这个 BLOG
MySQL 实现 Ms SQL 的 sp_executesql 
http://borland.mblogger.cn/shuixin13/posts/25911.aspx

解决方案 »

  1.   

    DELIMITER $$ DROP PROCEDURE IF EXISTS `test`.`takeit`$$ 
    CREATE PROCEDURE `takeit`(in RandomString character(20)) 
    BEGIN 
    set @a=RandomString; 
    set @s='create table ? (MyValues int)'; prepare stmt1 from @s; execute stmt1 using @a; deallocate prepare stmt1; 
    END$$ DELIMITER ;
      

  2.   

    你不应将表名做为参数传入 
    set @s=CONCAT('create table ', RandomString, ' (MyValues int)'); prepare stmt1 from @s; execute stmt1 
      

  3.   

    大哥,如果我直接执行如
    set @s = CONCAT('create table sssss (MyValues int)');
    prepare stmt1 from @s;
    execute stmt1;
    是正确可行的,但是如果我把这东西放到procedure中就会出错,大哥说不应将表名做为参数传入,可这部分并不是我能管的范围,上面已经生成了一个字符串(但我知道他是随机生成的)要我用处理过程创建一个用随机字符串作为表名的表,我该怎么办?