大家好,我遇到mysql 存储过程问题
大致如下
delimiter //
create procedure initial(in mac varchar(3),in flag varchar(3),in h0h1h2h3 vrachar(4))
begindeclare n int;
declare temp  int;
declare i int;set n = len(flag)
set temp = 0;
set i = 0if n =1 then
set temp = 1000;
end ifwhile i < temp
insert into map (tldn) values(concat (mac, flag,h0h1h2h3,right(1000+i ,3)));
i := i + 1;
endwhile
end;
//
报insert into map (tldn) values(concat (mac, flag,h0h1h2h3,right(1000+i ,3)));错误
tldn 是 varchar(11) ,而flag是可能1,2,3位的字符串,以上代码是为一位的情况,我想把mac flag h0h1h2h3 和一个三位数字联合起来赋给tldn 列,
请大家多多指教

解决方案 »

  1.   

    insert into map (tldn) values(concat (mac, flag,'h0h1h2h3',right(1000+i ,3)));
      

  2.   

    varchar(11)不够吧,3+3+4+3 最大可能是13啊
      

  3.   

    create procedure initialin mac varchar3,in flag varchar(3),in h0h1h2h3 vrachar(4))注意你的(是中文全角的,应该是英文半角 ()
      

  4.   

    create procedure initial(in mac varchar(3),in flag varchar(3),in h0h1h2h3 vrachar(4))错误确认你贴出的代码报错信息是 报insert into map (tldn) values(concat (mac, flag,h0h1h2h3,right(1000+i ,3)));错误 ???!!!!
    问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧
      

  5.   

    不好意思,在mysql下少打了一个dowhile i < temp  doinsert into map (tldn) values(concat (mac, flag,h0h1h2h3,right(1000+i ,3)));
    i := i + 1;
    endwhile
    end;