我正在用pgsql脚本语言创建一个函数,而且我想在这一点上执行的操作是迭代查询的结果,并为每一行执行特定的操作。我目前的尝试如下,其中temprow
宣布为temprow user_data.users%rowtype
。有问题的代码如下:PostgreSQL - 遍历查询结果
FOR temprow IN
SELECT * FROM user_data.users ORDER BY user_seasonpts DESC LIMIT 10
LOOP
SELECT user_id,user_seasonpts INTO player_idd,season_ptss FROM temprow;
INSERT INTO user_data.leaderboards (season_num,player_id,season_pts) VALUES (old_seasonnum,player_idd,season_ptss);
END LOOP;
但是我从这个出现以下错误:ERROR: relation "temprow" does not exist
。如果我很清楚自己想做什么,你能否指出正确的做法?
做这将是正确的做法:“dont't迭代”。你似乎做的是完全可行的使用普通的SQL:'插入到排行榜(a,b,c)从用户中选择x,y,z;' – wildplasser
正如我在答案中注意到的那样,old_seasonnum此时未被选中来自'user_data.users',但在之前的一点。 –
允许在需要表达式的地方使用常量(或在plpgsql或准备语句中的变量):'insert into foo(a,b,c)从bar中选择42,y,z;'注意:在你的代码'old_seasonnum'甚至没有定义。 – wildplasser