我一直在使用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
我究竟做错了什么?
必须声明迭代器
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