delimiter //
drop procedure if exists myprocedure;
create procedure myprocedure ()
begin
  declare tablesql varchar(200);
  
  set tablesql = CONCAT ('select * from','student');
  
  prepare statement from tablesql;
  execute statement;
  end
  //错在那里?

解决方案 »

  1.   

    DELIMITER //
    DROP PROCEDURE IF EXISTS myprocedure //
    CREATE PROCEDURE myprocedure ()
    BEGIN
       SET @tablesql = CONCAT ('select * from','student');
        
       PREPARE statement FROM @tablesql;
       EXECUTE statement;
       END   //
    DELIMITER ;
      

  2.   

    谢谢。  @tablesql 怎么来的,我不用声明为变量么,并指定大小么
      

  3.   

    delimiter //
    drop procedure if exists myprocedure//
    create procedure myprocedure ()
    begin
      declare tablesql varchar(200);
      set tablesql = CONCAT ('SELECT * FROM ','student');
      set @s := tablesql;
      prepare statement from @tablesql;
      execute statement;
      end
      //
      delimiter ;
    结贴,感谢大神