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
我已经使用 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