open cur1;
myloop: LOOP
set tmpname='1111111111111';//这句赋值语句没有执行
FETCH cur1 into tmpname;IF done = 1 THEN
LEAVE myloop;
ELSE
set tmpname = '0';//这句有执行,但是只是字符串的第一个字符变成了0 ????
select count(*) into retvalue from issues where  my_test(tmpname, title);END IF;
END LOOP myloop;
close cur1;LOOP循环是从哪里开始循环的呢?
假设结果集为(zzzz, liaowei, wuzuning, suchongli, zhuzongtao, linnuanbin, zhengyuquan, luopengcheng)但是通过上面的游标赋值后得到的值为
(zzzzuanbinng, liaoweibinng, wuzuninginng, suchonglinng, zhuzongtaong, linnuanbinng, zhengyuquang, luopengcheng,)???
为什么呢????

解决方案 »

  1.   

    open cur1;
    set sql='select count(*) into retvalue from issues where  my_test('
    PREPARE stmt2 FROM sql;
    myloop: LOOP
    set tmpname = '1111111111111';
    set sql=concat(sql,tmpname,', title)');
    EXECUTE stmt2;
    FETCH cur1 into tmpname;
    IF done = 1 THEN
    LEAVE myloop;
    ELSE
    set sql=concat(sql,tmpname,', title)');
    EXECUTE stmt2;
    END IF;
    END LOOP myloop;
    DEALLOCATE PREPARE stmt2;
    close cur1;
      

  2.   

    LOOP循环是从哪里开始循环的呢?myloop: LOOP
    set tmpname='1111111111111';//这句赋值语句没有执行
    FETCH cur1 into tmpname;
     
    IF done = 1 THEN
    LEAVE myloop;
    ELSE
    set tmpname = '0';//这句有执行,但是只是字符串的第一个字符变成了0 ????
    select count(*) into retvalue from issues where  my_test(tmpname, title);
     
    END IF;
    END LOOP myloop;