加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 数据库 > MySql > 正文

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

发布时间:2020-05-22 22:13:11 所属栏目:MySql 来源:互联网
导读:我们正在从PostgreSQL迁移和应用到MySQL.基本上,我想在MySQL中循环一个结果.SELECT col1 FROM table1; ---(1)从此查询中获取结果.LOOP THROUGH col1Result SELECT myCol FROM table2 WHERE thisCol = col1Result ---等于上一个查询的每个

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

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

LOOP THROUGH col1Result

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

END LOOP;

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

FETCH cur1 INTO a,b;

这不是将cur1的每一个结果都变成变量a和b吗?
我如何确保我目前在变量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;
最佳答案 cur1会读取每行的结果.每次循环它都会得到下一行.所以它第一次循环就会得到第一行.
这将一直持续到循环中断或没有更多行可用(在这种情况下会出现无数据条件).

有关更多信息,请参见this希望能帮助到你.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读