- 论坛徽章:
- 1
|
下面是我写的一个函数,功能是把公式中的每个变量替换为对应的值
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');
貌似没有死循环啊
提前谢谢各位大侠帮俺看看
|
|