Sto creando una funzione in linguaggio di script pgsql e quello che voglio fare in questo punto è iterare sui risultati di una query e ogni riga esegue qualcosa di specifico. Il mio attuale tentativo è il seguente, dove temprow
è dichiarato come temprow user_data.users%rowtype
. Il codice in questione è il seguente:PostgreSQL - Iterare sui risultati della query
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;
Tuttavia ho il seguente errore da questo: ERROR: relation "temprow" does not exist
. Se è chiaro cosa voglio fare, potresti indicarmi il modo giusto per farlo?
Il modo giusto per farlo potrebbe essere: "Dont't iterate". Quello che sembra essere perfettamente fattibile usando un semplice SQL: 'inserisci nelle classifiche (a, b, c) seleziona x, y, z dagli utenti;' – wildplasser
Come ho notato nella risposta, 'old_seasonnum' non è selezionato a questo punto da 'user_data.users', ma in un punto precedente. –
È consentito utilizzare una costante (o una variabile, in plpgsql o in istruzioni preparate) dove è richiesta un'espressione: 'inserisci in foo (a, b, c) seleziona 42, y, z dalla barra;' Nota: in il tuo codice 'old_seasonnum' non è nemmeno definito. – wildplasser