今天想测试自己的程序,突发奇想用mysql里面的循环插入几百万行数据试试,
结果不知道mysql的循环的语法,查看mysql参考手册,简单的几行代码直接copy过来都不行错误1:drop procedure if exists insertBatch;
create procedure insertBatch()
begin
select * from admininfo;
end;只是新建一个存储过程而已,在里面简单查询一下我的表,报错....错误2drop procedure if exists insertBatch;
create procedure insertBatch()
begin
declare num int default 0;
end;只是想在过程里面声明一个变量,一样报错,不能声明变量,去掉default 0的默认值也不行在整个互联网上搜索,百度,谷歌全是千遍一律的.拿过来一样报错
想写个循环插入都不行网上下了一本mysql 5.1的参考手册,上面的语法我拿过来用全不都不支持,虽然我的mysql是5.0的
难道5.0和5.1的语法有很大的出入?我用的是SQLyog的图形化工具的查询分析器,不知道大家有没有和我一样的情况,我2哦...mssql和oracle简单多了,都没有出现像这样让人郁闷的问题,谁能帮帮我我QQ 313009286,先谢过了

解决方案 »

  1.   

    1. 先用mysql命令行连上去确认没有问题, 5.0也是可以的。注意delimter修改界定符。
    mysql> delimiter //mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
        -> BEGIN
        ->   SELECT COUNT(*) INTO param1 FROM t;
        -> END;
        -> //2.如果上述例子OK,则到你的那个SQLyog中去试试
      

  2.   


    mysql肯定没有问题,因为有个erp已经在运行了,用的就是mysql上面的那个存储过程在命令行里面输入到select...这条语句时我输入;后回车就报错了,
    根本不给机会我输入end;放在sqlyog里面一样报错
      

  3.   

    delimiter // 
    这个你输了吗?
      

  4.   


    老大,我成功了,可以睡个好觉了,刚刚不小心还写了个死循环,但是
    delimiter // 
    这个是什么意思哦,参考手册里面没有说明啊还要在后面加上//
      

  5.   

    delimiter是设置语句结束字符,否则mySQL遇到;就执行了,改成//之后,当渎到//才提交执行.
      

  6.   

    我一直以为跟mssql一样,go才是提交,你说读到//才提交的话,那应该放在end后面才对了,怎么放到前面了
      

  7.   

    呵呵,你是在MYSQL命令行下输入代码,要用delimiter设置结束符,
    才能输入相关代码,最后再用delimiter设置正常结束符。
      

  8.   


    前面是通过mySQL,我要换结束符了,不再以;结束了,以 // 结束!!!后面真正的在 end; 后面的 // 是结束。
      

  9.   

    我还有一个问题delimiter//
    drop procedure if exists insertData;delimiter//
    create procedure insertData()
    begin
    declare num int default 0;
    set num = 0 ;
    while @num < 10 do
    insert into phoenix.admininfo 
    values (null, 'test', 'test', 'test', 1, '1987-5-29', '1987-5-29', 'admin_email',
    'admin_Mobile', 'admin_extension', 088, 0, phoenix, null, null, 0, 11); set @num = @num + 1;
    end while;
    end;
    为什么这段代码不能一起全部执行,非要先drop后才能create?
      

  10.   

    呵呵,因为已经存在同名的SP的,要删除再能CREATE
      

  11.   

    另,第一个问题,在SQLYOG中建立SP,默认有一个delimiter$$,
    结束有delimiter//
    SQLYOG比较好用
      

  12.   

    我是想有没有显示提交的,类似于mssql中的go一样的
    执行了一条语句后就提交
      

  13.   

    呵呵,MYSQL是FREE的,功能没有SQLSERVER强大,没有GO,
    而且drop procedure if exists insertData;
    可以单独执行,也可以在SP中执行