如何使用Postgres在SQL中执行for循环?

时间:2018-04-23 09:25:27

标签: postgresql for-loop plpgsql

我在Python中有一个基本背景,我对SQL的了解正在增长,但我从未对SQL中的循环做过任何事情。 我想使用列表在SQL中执行for循环,并在pgAdmin 4中执行此操作。

因此,我想从Python的角度来翻译 “for l in list”语句到SQL。

我已经在网上进行了很多研究,但是我找不到一个教程或手册来逐步解释它是如何工作的以及声明中每个单词或部分的作用。

是否有可以推荐的网站,手册,教程甚至书籍,这对SQL循环中的初学者有用吗?或者有人可以在这里的答案评论中解释它,如果它不是太复杂而且很长时间吗?

基于我到目前为止对SQL中的循环的研究,这里有一个我想要做的例子:

CREATE TABLE draft AS
FOR x IN list [green1, blue2, red4]
LOOP
-- do this and that --
END LOOP;

2 个答案:

答案 0 :(得分:1)

你可以用PL / SQL做这样的事情来循环数组。

declare
   type draft_arr_type is table of  draft%rowtype index by pls_integer;
   v_draft_arr draft_arr_type;
begin
   SELECT *
      bulk collect into v_draft_arr
      FROM draft
      ORDER BY <what you want here>;

   for i in v_draft_arr.first..v_draft_arr.last loop
      --code
   end loop;
end;

答案 1 :(得分:0)

SQL没有循环,你必须使用PL / pgSQL,才能编写循环。

检查https://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-CONTROL-STRUCTURES-LOOPS