PL/pgSQL "for loop" + select 基本示例 ("hello world")

PL/pgSQL "for loop" + select basic example ("hello world")

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

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

这很好用:

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

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

我一直运行进入这个错误:

Error in query: ERROR: loop variable of loop over rows must be a record or row variable or list of scalar variables

对我来说听起来很晦涩,谷歌搜索也没有帮助。

我想使用来自我自己数据的 table(我希望使用 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; $$

这也会产生上述错误。我想打印一个简单的东西来掌握循环语法,比如:

hello 1
hello 2

我做错了什么?

必须声明迭代器

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