(MySQL)存储过程-循环遍历结果
我们正在将应用程序从PostgreSQL迁移到MySQL。(MySQL)存储过程-循环遍历结果,mysql,loops,stored-procedures,iteration,Mysql,Loops,Stored Procedures,Iteration,我们正在将应用程序从PostgreSQL迁移到MySQL。 基本上,我想在MySQL中循环一个结果 从表1中选择col1当您可以使用联接进行处理时,为什么要使用循环 select mycol from table2 t2 join table1 t1 on t1.col1 = t2.thiscol; 这在Postgres和MySQL中都有效。cur1将读取每行的结果。每次循环它都会得到下一行。因此,当它第一次循环时,它将得到第一行。 这将一直持续到循环中断或不再有行可用为止
基本上,我想在MySQL中循环一个结果
从表1中选择col1代码>当您可以使用联接进行处理时,为什么要使用循环
select mycol
from table2 t2 join
table1 t1
on t1.col1 = t2.thiscol;
这在Postgres和MySQL中都有效。cur1
将读取每行的结果。每次循环它都会得到下一行。因此,当它第一次循环时,它将得到第一行。
这将一直持续到循环中断或不再有行可用为止(在这种情况下,将出现无数据条件)
有关更多信息,请参阅。希望能有所帮助。Hi Gordon,感谢您的反馈和建议。查看当前过程,列将从中获取的第一个SELECT语句至少包含26行。这包括多个JOIN和where子句。该特定SELECT语句的结果将在整个cyc中使用多次删除该过程。如果每次需要结果时都要执行SELECT语句,那么维护该过程对我来说将是非常困难的。由于此注释框中的字符数超过,请查看我的编辑。你好,Woofmeow,谢谢。我将尝试该特定链接中提供的示例。欢迎@MichaelArdan。如果(它有助于)将其作为正确答案进行投票,这样它也可以帮助其他人;否则,要求更多;:)再次您好Woofmeow先生。我想知道给定示例中的“完成”有什么作用。我尝试了示例过程,结果出现了错误,错误代码为:1054。“字段列表”中的未知列“完成”。很酷@MichaelArdan,您一定工作过度了。我们都这样做:)
END LOOP;
FETCH cur1 INTO a, b;
FOR my_record IN
SELECT DISTINCT col1
FROM table1
WHERE col2 = param1;
LOOP
SELECT DISTINCT col4
FROM table2
WHERE col3 = my_record.col1;
IF true THEN
RAISE EXCEPTION '%', 'ERROR MESSAGE' || my_record.col1;
END IF
SELECT DISTINCT col5
FROM table3
WHERE col6 = my_record.col1;
IF true THEN
RAISE EXCEPTION '%', ERROR MESSAGE' || my_record.col1;
END IF;
END LOOP;
select mycol
from table2 t2 join
table1 t1
on t1.col1 = t2.thiscol;