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

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

点击次数:33 次 发布日期:2008-11-28 05:53:25 作者:源代码网
源代码网推荐
源代码网推荐

源代码网整理以下我在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)
会员中心
网络编程
本站推荐
网络编程之精华