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

问题描述 投票:0回答:1

我一直在使用Postgres,但我对PL / pgSQL完全不熟悉。

我正在努力让一个基本的循环工作。

这很好用:

-- 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

我究竟做错了什么?

postgresql plpgsql
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.