1.需求
我想通过存储过程的两次while循环向 tb_article_category表 插入7*14条记录2.代码//建表
CREATE TABLE `tb_article_category` (
  `AutoID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `CategoryID` bigint(20) unsigned NOT NULL DEFAULT '0' ,
  `CategoryName` varchar(100) DEFAULT NULL ,
  `AddTime` datetime DEFAULT NULL,
  `UpdateTime` datetime DEFAULT NULL ,
  PRIMARY KEY (`AutoID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;//创建存储过程CREATE PROCEDURE `category_insert`(in innerNum int,in outterNum int)
begin
     set @a=0;
     set @b=0;
     two:while @a<=outterNum do
               one:while @a<=innerNum do
                          insert into tb_article_category(AutoID,CategoryID,CategoryName,AddTime,UpdateTime)
                          values(null,@b,'csdn',null,null);
                          set @a=@a+1;
               END while one;
               set @b=@b+1;
     END while two;
end;3.背景信息
调用存储过程:
call category_insert(7,14);4.问题
由于我用的是图形界面,当执行这个存储过程,一会儿立刻图形界面卡住
因此,我认为可能是我的存储过程出现了问题
但是这个存储过程创建的时候并未出现任何错误,能顺利创建
希望高手帮我看看存储过程的代码哪里有问题5.帖尾
请高手指教,小生在此感谢了。临帖涕零,不知所言!

解决方案 »

  1.   

    CREATE PROCEDURE `category_insert1`(in innerNum int,in outterNum int)
    begin
         set @a=innerNum*outterNum;
        while @a>0 do
                              insert into tb_article_category(AutoID,CategoryID,CategoryName,AddTime,UpdateTime)
                              values(null,@b,'csdn',null,null);
                              set @a=@a-1;
                   END while ;end;这样不好么?为什么要两次循环?
      

  2.   

    创建存储过程之前
    delimiter //
    然后是你的存储过程:
    CREATE PROCEDURE `category_insert`(in innerNum int,in outterNum int)
    begin
         set @a=0;
         set @b=0;
         two:while @a<=outterNum do
                   one:while @a<=innerNum do
                              insert into tb_article_category(AutoID,CategoryID,CategoryName,AddTime,UpdateTime)
                              values(null,@b,'csdn',null,null);
                              set @a=@a+1;
                   END while one;
                   set @b=@b+1;
         END while two;
    end;
    //
    然后再恢复
    delimiter ;

    call category_insert(7,14);试试
      

  3.   

    CREATE PROCEDURE `category_insert`(in innerNum int,in outterNum int)
    begin
         set @a=0;
         set @b=0;
         two:while @b<=outterNum do
                   one:while @a<=innerNum do
                              insert into tb_article_category(AutoID,CategoryID,CategoryName,AddTime,UpdateTime)
                              values(null,@b,'csdn',null,null);
                              set @a=@a+1;
                   END while one;
                   set @b=@b+1;
         END while two;
    end;
      

  4.   

    两层循环第一个应该是
    two:while @b<=outterNum do
      

  5.   

    内层循环后 要set @a=0
    END while one;
    set @a=0;
      

  6.   

    直接在MYSQL命令行工具试。然后看结果和提示。