mysql游标的应用尝试

近期在修改一位哥留下的数据库存储过程的应用,需要用到游标。照着文档例子写了,但就是不出数据。后来google了下,终于在csdn中有人也遇到过这个问题,且已经解决。现记于此,留作参考资料

我的mysql 版本 5.0.51b-community-nt

官方5.0文档中的游标使用例子

CREATE PROCEDURE curdemo()  
BEGIN  
  DECLARE done INT DEFAULT 0;  
  DECLARE a CHAR(16);  
  DECLARE b,c INT;  
  DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;  
  DECLARE cur2 CURSOR FOR SELECT i FROM test.t2;  
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;  
  
  OPEN cur1;  
  OPEN cur2;  
  
  REPEAT  
    FETCH cur1 INTO a, b;  
    FETCH cur2 INTO c;  
    IF NOT done THEN  
       IF b < c THEN  
          INSERT INTO test.t3 VALUES (a,b);  
       ELSE  
          INSERT INTO test.t3 VALUES (a,c);  
       END IF;  
    END IF;  
  UNTIL done END REPEAT;  
  
  CLOSE cur1;  
  CLOSE cur2;  
END  

经过我的测试,这种方法是可以查到数据的条数的,但取出的数据为NULL。
而且如果同时游标区域外使用简单脚本,将也只能显示条数,数据全都为NULL。
只需要作一点小改动就可以使数据正常显示出来,
add a alias for tablename in select scripts.
eg:
declare cur1 cursor for select pi.playerid from playerinfo pi;
同时其它未使用游标的语句也要使用alias,否则无法得到灵气,只能得到数据条数而已。