私は pgsql スクリプト言語で関数を作成しています。この時点で実行したいのは、クエリの結果を反復処理し、各行に対して特定の操作を実行することです。現在試しているのは、 がtemprow
として宣言されている次のコードですtemprow user_data.users%rowtype
。問題のコードは次のとおりです。
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
何をしたいのかが明確な場合は、正しい方法を教えていただけますか?
ベストアンサー1
temprow
は、最初の各レコードに順番にバインドされるレコード変数ですSELECT
。
したがって、次のように記述する必要があります。
FOR temprow IN
SELECT * FROM user_data.users ORDER BY user_seasonpts DESC LIMIT 10
LOOP
INSERT INTO user_data.leaderboards (season_num,player_id,season_pts) VALUES (old_seasonnum,temprow.userd_id,temprow.season_ptss);
END LOOP;
このループは、単一のクエリとしてさらに簡略化できます。
INSERT INTO user_data.leaderboards (season_num,player_id,season_pts)
SELECT old_seasonnum,player_idd,season_ptss FROM user_data.users ORDER BY user_seasonpts DESC LIMIT 10