【发布时间】: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