【问题标题】:mysql 5.7 cursor not returning any valuesmysql 5.7游标不返回任何值
【发布时间】:2019-07-01 15:58:09
【问题描述】:

Mysql(5.7 版)游标不工作。试了很多次,网上查也没发现哪里有问题。

它正在正确循环货币表中的尽可能多的记录。但是当我尝试从游标中读取时,它只返回 null 而不是表货币的实际值。货币表有数据。

DROP PROCEDURE IF EXISTS proc2;

CREATE PROCEDURE proc2()
BEGIN
    DECLARE finished INTEGER DEFAULT 0;
    DECLARE code VARCHAR(255);
    DECLARE myCursor CURSOR FOR SELECT code FROM currency;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1;

    OPEN myCursor;

    delete from dummy;

    read_loop: LOOP
        FETCH myCursor INTO code;   

         IF finished = 1 THEN 
            LEAVE read_loop;
         END IF;

        insert into dummy(name) values(code);

    END LOOP read_loop;

    CLOSE myCursor;

End;

【问题讨论】:

  • 您是否有理由使用循环而不是 INSERT INTO dummy (name) SELECT code from currency
  • 谢谢,这只是伪代码。实际上,我想迭代临时表中的所有记录,并且对于每条记录,我想插入到另外 2 个表中。这是为了批量上传大约 300 万条记录。
  • 那我看不出它不工作的任何原因。
  • 最好还是做两个INSERT ... SELECT ...

标签: mysql stored-procedures database-cursor


【解决方案1】:

最后,它对脚本进行了以下更改。 (即添加表别名后。)

出于某种原因,我尝试使用“代码”的列需要一个别名。可能是保留关键字,不确定。

 DECLARE myCursor CURSOR FOR SELECT c.code FROM currency c;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 2018-08-04
    • 2015-05-20
    • 2016-04-18
    相关资源
    最近更新 更多