这是我写的过程--Cursor c1 & c2。c2在c1内部,我尝试在c1下面声明c2 (在c1游标之外),但是I没有接受更新值:(任何使其工作的建议都会很有帮助,谢谢
create table t1(i int);
create table t2(i int, j int);
insert into t1(i) values(1), (2), (3), (4), (5);
insert into t2(i, j) values(1, 6), (2, 7), (3, 8), (4, 9), (5, 10);
delimiter $
CREATE PROCEDURE p1()
BEGIN
DECLARE I INT;
DECLARE J INT;
DECLARE done INT DEFAULT 0;
DECLARE c1 CURSOR FOR SELECT i FROM t1;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN c1;
REPEAT
FETCH c1 INTO I;
IF NOT done THEN
select I;
DECLARE c2 CURSOR FOR
SELECT j FROM t2 WHERE i = I;
OPEN c2;
REPEAT
FETCH c2 into J;
IF NOT done THEN
SELECT J;
END IF;
UNTIL done END REPEAT;
CLOSE c2;
set done = 0;
END IF;
UNTIL done END REPEAT;
CLOSE c1;
END$
delimiter ;发布于 2010-01-23 03:52:44
我不明白你想做什么。当您在过程中一次选择一个字段时,您将创建多个结果集。我怀疑这是你想要的。
下面的过程要简单得多,它在单个结果集中提供了相同的数据:
CREATE PROCEDURE p1()
BEGIN
SELECT i, j FROM t1 JOIN t2 USING (i);
END也许你可以编辑你的问题并描述你想要的结果,或者展示一个想要的输出的例子。
https://stackoverflow.com/questions/2088184
复制相似问题