首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql动态游标

mysql动态游标
EN

Stack Overflow用户
提问于 2010-01-19 02:15:08
回答 1查看 1.4K关注 0票数 0

这是我写的过程--Cursor c1 & c2c2c1内部,我尝试在c1下面声明c2 (在c1游标之外),但是I没有接受更新值:(任何使其工作的建议都会很有帮助,谢谢

代码语言:javascript
复制
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 ;
EN

回答 1

Stack Overflow用户

发布于 2010-01-23 03:52:44

我不明白你想做什么。当您在过程中一次选择一个字段时,您将创建多个结果集。我怀疑这是你想要的。

下面的过程要简单得多,它在单个结果集中提供了相同的数据:

代码语言:javascript
复制
CREATE PROCEDURE p1()
BEGIN
  SELECT i, j FROM t1 JOIN t2 USING (i);
END

也许你可以编辑你的问题并描述你想要的结果,或者展示一个想要的输出的例子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2088184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档