想请教下
delimiter//
create procedure cps()
begin
 declare table_user  varchar(200) default 'user';
 set strSql = concat('select * from ',table_user);
 prepare a from strSql;
 execute a; 
end//
 这个过程 有错误,我没写过过程,怎么处理执行字符串啊????还请各位高人指点。

解决方案 »

  1.   

     set @strSql = concat('select * from ',table_user);
     prepare a from @strSql;
     execute a; 
      

  2.   

    mysql变量不是不需要 @符号么?
      

  3.   

    嗯 我试了 这样可以执行成功 谢谢你
    不过 为什么在prepare中需要呢,不太明白
      

  4.   

    mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
    mysql> SET @a = 3;
    mysql> SET @b = 4;
    mysql> EXECUTE stmt1 USING @a, @b;
    +------------+
    | hypotenuse |
    +------------+
    |          5 |
    +------------+
    mysql> DEALLOCATE PREPARE stmt1;
    你的问题解决的办法,这样也行。
      

  5.   

     
    是的,如果是过程内的局部变量不需要@,@开头的变量是SESSION变量。 而你用了prepare则需要使用SESSION级的变量,不能使用局部变量。delimiter//
    create procedure cps()
    begin
      declare table_user  varchar(200) default 'user';
      set @strSql = concat('select * from ',table_user);
      prepare a from @strSql;
      execute a;  
    end//