我要完成的工作是遍历表的所有行并一次抓取一行并对其进行处理。像这样
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
从上面,名称返回null。我检查了x是否正确增加,这似乎很好。我想获取ID为x的行。 第一次在SQL中使用循环,因此不确定是否允许循环。但是,我还没有看到人们在循环内使用选择,主要是操纵数据和更新行。最终目标是创建临时表,并在操作后将每一行插入其中。对于专家来说,我在这里做什么愚蠢的事情,因为我无法从表中提取数据并将其分配给变量? 编辑:更新的代码更加清晰
答案 0 :(得分:0)
发布的代码只会查看ID = 379,我假设您打算使用“ WHERE ID = x”。
此外,您通常可以在不使用循环的情况下完成所需的操作,但是如果您坚持要进行迭代编程,请考虑学习游标。它将以更简单的语法为您处理while循环内的一些小细节。