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

王朝mysql·作者佚名  2008-05-21
窄屏简体版  字體: |||超大  

我在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的数据进行比较。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航