Chinaunix首页 | 论坛 | 博客
  • 博客访问: 310090
  • 博文数量: 163
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: -40
  • 用 户 组: 普通用户
  • 注册时间: 2017-03-08 00:28
文章分类

全部博文(163)

文章存档

2015年(2)

2014年(35)

2013年(28)

2012年(30)

2011年(22)

2010年(14)

2009年(8)

2008年(13)

2007年(11)

分类: Mysql/postgreSQL

2010-10-19 17:11:44

author: hnynes
MSN:   
 
转载请注明出处,谢谢
 
 
近期在修改一位哥留下的数据库存储过程的应用,需要用到游标。照着文档例子写了,但就是不出数据。后来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,否则无法得到灵气,只能得到数据条数而已。
阅读(1790) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~