(MySQL)存储过程 - 循环结果

Mic*_*dan 5 mysql iteration loops stored-procedures

我们正在从PostgreSQL迁移和应用到MySQL.
基本上,我想在MySQL中循环一个结果.

SELECT col1 FROM table1; <---(1)从此查询中获取结果.

LOOP THROUGH col1Result
Run Code Online (Sandbox Code Playgroud)

SELECT myCol FROM table2 WHERE thisCol = col1Result <---等于上一个查询的每个结果.

END LOOP;
Run Code Online (Sandbox Code Playgroud)

我也找到了这个参考
http://dev.mysql.com/doc/refman/5.0/en/cursors.html
但是,我坚持这一行.

FETCH cur1 INTO a, b;
Run Code Online (Sandbox Code Playgroud)

那岂不是让每一个结果cur1到变量ab?我如何确保我目前在变量的第一个索引a

这是一个关于如何在我的结尾使用结果的例子(写在PostgreSQL中).

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;
Run Code Online (Sandbox Code Playgroud)

woo*_*eow 3

cur1将读取每一行的结果。每次循环它都会获取下一行。所以第一次循环时它将获得第一行。这将一直持续下去,直到循环中断或没有更多行可用(在这种情况下,会出现“无数据”条件)。

请参阅了解更多信息。希望能帮助到你。