daiqr12345 发表于 2015-10-26 14:53

存储函数运行起来终端就不响应了

下面是我写的一个函数,功能是把公式中的每个变量替换为对应的值
delimiter //

create function func_test01(formula varchar(800),in_ind_id_str varchar(800),in_ind_val_str varchar(800)) returns text(800) DETERMINISTIC
begin
declare l_formula varchar(800);
declare ind_id varchar(20);
declare ind_val varchar(20);
declare id1 int(4) default 0;
declare len int(4) default 0;
declare tmp_str varchar(800);
declare ind_id_str varchar(800);
declare ind_val_str varchar(800);

set l_formula = formula;
set ind_id_str = in_ind_id_str;
set ind_val_str = in_ind_val_str;

while instr(ind_id_str,',')>0 do

set len = length(ind_id_str);
set id1 = instr(ind_id_str,',');
set ind_id = left(ind_id_str,id1-1);
set tmp_str = right(ind_id_str,len+1-id1);
set ind_id_str = tmp_str;

set len = length(ind_val_str);
set id1 = instr(ind_val_str,',');
set ind_val = left(ind_val_str,id1-1);
set tmp_str = right(ind_val_str,len+1-id1);
set ind_val_str = tmp_str;

set l_formula = replace(l_formula,ind_id,ind_val);

end while;

set l_formula = replace(l_formula,ind_id_str,ind_val_str);
return l_formula;

end;

当我运行时,mysql终端就没有反应了,例如:select('L1+L2','L1,L2','1,2');

貌似没有死循环啊

提前谢谢各位大侠帮俺看看

daiqr12345 发表于 2015-10-26 14:57

这时候连drop这个函数也都没有反应

操作其他表格,过程都是正常的

shang2010 发表于 2015-10-27 23:19

是不是死循环了,还是表本身就很大
页: [1]
查看完整版本: 存储函数运行起来终端就不响应了