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的数据进行比较。 源代码网供稿. |
