当前位置:首页 > 网络编程 > 数据库 > Mysql > MySQLCursors:一个Trigger中,同时存在两个cursors的问题

MySQLCursors:一个Trigger中,同时存在两个cursors的问题

点击次数:25 次 发布日期:2008-11-28 05:40:56 作者:源代码网
源代码网推荐
  我在MySQl的帮助文档中看到游标可以嵌套使用:

  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 SQLSTATE "02000" 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

  可是我的两个cursor中的东西毫不关联,而且也没有可比性。

  也就是说,如果一个中已经没数据了,可是另一个才刚开始。那么会怎么样?

  我记得

  “DECLARE CONTINUE HANDLER FOR SQLSTATE "02000" SET done = 1;”

  的意思是;当取不到数据就 SET done = 1;

  也就是我的另一个中的数据还没有取完就被结束了。

  那么谁见过/写过最NB的cursor,给几个例子看看。

  因为我需要对一张表在insert后,判断并且操作另外的两张表。

  (这个设计是不是太BT了,我也不想这样,被设计成这样了,所以这能适应了。)

  需要用cursor吧把另外两张表的中的数据取出和insert的数据进行比较。

源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华