私は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を使って完全に実現可能です: 'insert into leaderboards(a、b、c)usersからx、y、zを選択してください、 ' – wildplasser
答えで気づいたように、' old_seasonnum'はこの時点では選択されていません'user_data.users'からではなく、前のポイントにあります。 –
式を必要とする定数(または変数plpgsqlやプリペアドステートメントの変数)を使用することができます。 'insert into foo(a、b、c)barから42、y、zを選択します。あなたのコード 'old_seasonnum'は定義されていません。 – wildplasser