比如有一个存储过程
CREATE PROCEDURE `test`()
BEGIN
  declare m_a varchar(20);
  set m_a = 'delete from testable';  prepare stmt from 'delete from testtable'; --这样可以编译通过
  execute stmt;   prepare stmt from m_a; --这里就编译不通过了
  execute stmt; END

解决方案 »

  1.   

    set @id=1;
    PREPARE p2 FROM 'UPDATE a SET name=''namax'' WHERE id=?;';
    EXECUTE p2 USING @id; 
    变量用@xxx的形式即可
      

  2.   

    这样的话如果我要dml操作的表名也是不定的话就没办法了  declare m_a varchar(20);
      set m_a = 'delete from a';  prepare stmt from @m_a; 
      execute stmt ;
    这样编译通过,但调用存储过程时又出错
      

  3.   

     set @m_a = 'delete from a'; 
      prepare stmt from @m_a; 
      execute stmt ; 
      

  4.   

    哦原来这样
    那游标可不可以动态的啊
    比如    set @m_a = select dd from a'; 
        DECLARE cur1 CURSOR FOR @m_a;
    这样不可以的