我已经试过两种方式了,都行不通.方式一:
         declare stmt varchar(500);
         set @sqlstr=concat('SELECT * from ',tableName);
         prepare stmt from @sqlstr;
         DECLARE cursorTest CURSOR FOR execute stmt;
方式二:
        set @sqlstr=concat('DECLARE cursorTest  CURSOR  FOR  SELECT * FROM ',tableName,';');
        prepare stmt from @sqlstr;
        execute stmt;
        DEALLOCATE PREPARE stmt;

解决方案 »

  1.   

    DECLARE   cursorTest     CURSOR     FOR     SELECT   *   FROM tt 
                     set   @sqlstr=concat( 'create table tt as  SELECT   *   FROM   ',tableName, '; '); 
                     prepare   stmt   from   @sqlstr; 
                     execute   stmt; 
                     DEALLOCATE   PREPARE   stmt;.....
      

  2.   

    明白了  DECLARE cursorTest CURSOR  必须放在存储过程的开始部分呵呵