我试图完成的是遍历table的所有行,一次抓取一行,并对其执行一些操作。像这样的东西
BEGIN
DECLARE x INT;
DECLARE countmax INT;
DECLARE id INT;
DECLARE name VARCHAR(255);
SET x = 1;
SET id = 0;
SET countmax = (select count(*) from Appian.APPIAN_DATA);
SET FOREIGN_KEY_CHECKS = 0;
WHILE x < countmax DO
SET name = (SELECT FULL_NAME
FROM Appian.APPIAN_DATA
WHERE ID = x
);
#do something with above result here later.
SET x = x + 1;
END WHILE;
select name;
END从上面开始,name返回null。我检查了x是否正确地递增,它似乎是好的。第一次在SQL中使用循环,所以我不确定什么是允许的,什么是不允许的。但是,我还没有看到人们在循环中使用selects,主要是操作数据和更新行。最终的目标是创建临时表,并在操作后将每一行插入其中。对于专家来说,我在这里做了什么愚蠢的事情,我不能从表中提取数据并将其赋给变量?编辑:更新了代码,使其更加清晰
发布于 2019-05-09 02:05:01
发布的代码将只查看ID = 379,我假设您的意思是使用"WHERE ID = x“。
此外,您通常可以在不使用循环的情况下完成所需的任务,但如果您坚持使用迭代编程,请考虑改为学习游标。它将用更简单的语法在while循环中为你处理一些小细节。
https://stackoverflow.com/questions/56046538
复制相似问题