PL / pgSQL“ for循环” +选择基本示例(“ hello world”)

时间:2019-04-11 17:19:19

标签: postgresql plpgsql

我已经使用Postgres已有一段时间了,但是我对PL / pgSQL完全陌生。

我正在努力使基本的 for循环正常工作。

这很好:

-- Without SELECT
DO $$
BEGIN 
  FOR counter IN 1..6 BY 2 LOOP
    RAISE NOTICE 'Counter: %', counter;
  END LOOP;
END; $$;

但是我真正想要的是遍历SELECT查询的结果

我一直遇到此错误:

  

查询错误:错误:行循环的循环变量必须是记录或行变量或标量变量列表

声音对我来说很模糊,谷歌搜索也无济于事。

我想使用自己的数据创建一张表(我希望使用SELECT * FROM mytable WHERE ‹whatever›),但是我意识到我甚至无法获得 for循环使用更简单的数据

为此:

-- with a SELECT
DO $$
BEGIN 
RAISE NOTICE 'Get ready to be amazed…';
FOR target IN SELECT * FROM generate_series(1,2) LOOP
    RAISE NOTICE 'hello'
END LOOP;
END; $$

这也会产生上面的错误。我想打印一个简单的东西来理解循环语法,就像这样:

  

你好1
  你好2

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

必须声明迭代器

DO $$
DECLARE 
    target record;
BEGIN 
    RAISE NOTICE 'Get ready to be amazed…';
    FOR target IN SELECT * FROM generate_series(1,2) LOOP
        RAISE NOTICE 'hello';
    END LOOP;
END; $$;

NOTICE:  Get ready to be amazed…
NOTICE:  hello
NOTICE:  hello