建立一个过程
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_me`(IN `Src` char(80),IN `Dst` char(80),in Uid char(30))
BEGIN
   declare Dbname varCHAR(32) DEFAULT('2012-05-07') ;
   IF Src <> '' and Dst <> ''  then
     insert into Dbname (calldate,src,dst,tag)
        select `calldata`,`src`,`dst`,`tag` from `ask`.`tome` WHERE uid = Uid;
   end if;
END怎么在call insert_my('802','13632510278','1333107047.19') 总是提交test.Dbname 不存在呢?过程里Dbname 不是已经设为2012-05-07了吗

解决方案 »

  1.   

    set @asql='insert into Dbname (calldate,src,dst,tag)
       select `calldata`,`src`,`dst`,`tag` from `ask`.`tome` WHERE uid = Uid';
    prepare stml from @asql;
    execute stml;
      

  2.   

    是改为这样吧
    CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_me`(IN `Src` char(80),IN `Dst` char(80),in Uid char(30))
    BEGIN
      declare Dbname varCHAR(32) DEFAULT('2012-05-07') ;
      set @asql='insert into Dbname (calldate,src,dst,tag)
      select `calldata`,`src`,`dst`,`tag` from `ask`.`tome` WHERE uid = Uid';
      prepare stml from @asql;
      execute stml;
      end if;
    END
    只是在调用的时候
    call insert_me('802','13632510278','1333107047.19') 还是提示Table 'test.Dbname' doesn't exist呢
      

  3.   

    set @asql=concat('insert into ',Dbname,' (calldate,src,dst,tag)
       select `calldata`,`src`,`dst`,`tag` from `ask`.`tome` WHERE uid = Uid');
    prepare stml from @asql;
    execute stml;
      

  4.   


    SET @sqltext=concat('insert into ',Dbname,' (calldate,src,dst,tag)
      select `calldata`,`src`,`dst`,`tag` from `ask`.`tome` WHERE uid = Uid'');
    PREPARE sqlstr from @sqltext;
    Execute sqlstr;
      

  5.   


    drop PROCEDURE if exists insert_me;
    CREATE PROCEDURE `insert_me`(IN `Src` char(80),IN `Dst` char(80),in Uid char(30))
    BEGIN
      declare Dbname varCHAR(32) DEFAULT('2012-05-07') ;
      SET @UUid = Uid;
      IF Src <> '' and Dst <> '' then
      SET @sqltext=concat('insert into ',Dbname,' (calldate,src,dst,tag)
      select `calldata`,`src`,`dst`,`tag` from `ask`.`tome` WHERE uid = @UUid');
        PREPARE sqlstr from @sqltext;
        Execute sqlstr;
      end if;
    END;
      

  6.   

    杯具啊,这个存取过程用触发器调用时 却提示“dynamic sql is not allowed in stored function or trigger”
      

  7.   

    是的 function和 trigger都不支持动态语句的。