自己写了个存储过程,但是搞了老半天编译不过,大家帮我看看哪里错了。delimiter //
create procedure proc(in exeversion int,in resversion int,in updateversion int)
begin
declare @x int;
declare @y int;
declare @z int;
insert into versiontest values(exeversion ,resversion,updateversion);
set @x=1;
while @x<ver do
select max(resversion) into @y from exeversion where exeversion=@x;
set @z=@y+1;
insert into versiontest values(@x,@y,@z);
update version set exeversion=z where version=@x;
set @x=@x+1;
end while;
end;
//

解决方案 »

  1.   

    create procedure proc(@exeversion int,@resversion int,@updateversion int)
    begin
      declare @x int;
      declare @y int;
      declare @z int;
      insert into versiontest values(@exeversion ,@resversion,@updateversion);
      set @x=1;
      while @x<ver --ver哪里来的?--这里要对ver赋值才行。
      begin
        select @y = max(resversion) from exeversion where exeversion=@x; --这里的exeversion是另外一个表吗?
        set @z=@y+1;
        insert into versiontest values(@x,@y,@z);
        update version set exeversion = @z where version=@x; --这里的version又是另外一个表吗?
        set @x=@x+1;
      end
    end 
    end;
      

  2.   

    再更改一下:
    create procedure my_proc @exeversion int,@resversion int,@updateversion int as 
    begin
      declare @x int;
      declare @y int;
      declare @z int;
      insert into versiontest values(@exeversion ,@resversion,@updateversion);
      set @x=1;
      while @x<ver --ver哪里来的?--这里要对ver赋值才行。
      begin
        select @y = max(resversion) from exeversion where exeversion=@x; --这里的exeversion是另外一个表吗?
        set @z=@y+1;
        insert into versiontest values(@x,@y,@z);
        update version set exeversion = @z where version=@x; --这里的version又是另外一个表吗?
        set @x=@x+1;
      end
    end 
      

  3.   

    不好意思,我写的存储过程是这个
    create procedure proc(in exeversion int,in resversion int,in updateversion int)
    begin
    declare @x int;
    declare @y int;
    declare @z int;
    insert into versiontest values(exeversion ,resversion,updateversion);
    set @x=1;
    while @x<exeversion do
    select max(resversion) into @y from versiontest where exeversion=@x;
    set @z=@y+1;
    insert into versiontest values(@x,@y,@z);
    update version set updateversion=z where exeversion=@x;
    set @x=@x+1;
    end while;
    end;错误是:you have an error in your sql systax;check the manual that corresponds to your Mysql server version for the right syntax to use near '@x int;declaer @y int;declare @z int; insert into versiontest valuetest values(exeversio' at line 3
      

  4.   

    mysql
      

  5.   


    MYSQL???汗,不懂,我就觉得这语法怎么跟MSSQL不一样,你还是去相应的版块问问吧