求一个存储过程:有一号段表segs,里面存放着开始号段(starts)和结束号段(ends).现要求将号段里的所有号码全部写入到另一个号码表(numbers)中去。例如,starts=10000,ends=19999,需要将10000,10001,10002...19998,19999写入到numbers表中的number中。

解决方案 »

  1.   

    用while 循环即可。declare @i intdeclare @max int,@min intset @i=@minwhile @i<@max
    begin
          insert into ...
          set @i=@i+1
    end
      

  2.   

    大概思路我也是一样的,关键是INSERT 语句具体怎么写,请指教,我刚学不久,很菜
      

  3.   

    insert into numbers (numbers) values(@i)
      

  4.   

    declare @i intdeclare @max int,@min intset @i=@minwhile @i<@max
    begin
          insert into numbers (number) values(@i)      set @i=@i+1
    end
      

  5.   

    这样写好象不行,我之前有试过高手来帮忙看看程序哪有问题:
    BEGIN
      DECLARE _starts BIGINT(20);
      DECLARE _ends BIGINT(20);
      DECLARE _i BIGINT(20) UNSIGNED; 
      SELECT starts into _starts from segs;
      SET _i=_starts;
      
      SELECT ends into _ends from segs;
      WHILE _i<=_ends
      DO
      INSERT INTO numbers(number) values(_starts);     PREPARE stmt FROM @sqlstr;
         EXECUTE stmt;
         DEALLOCATE PREPARE stmt;  SET _i=_i+1;END WHILE;
    END