Tworzę funkcję w języku skryptowym pgsql, a tym, co chcę zrobić w tym punkcie, jest iteracja wyników zapytania i dla każdego wiersza zrobić coś konkretnego. Moja obecna próba jest następująca, gdzie temprow
jest zadeklarowana jako temprow user_data.users%rowtype
. Kod w pytanie jest następujące:PostgreSQL - Iteracja wyników zapytania
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;
Jednak pojawia się następujący błąd z tego: ERROR: relation "temprow" does not exist
. Jeśli jasne jest, co chcę zrobić, czy możesz wskazać mi właściwą drogę?
Prawo sposobem na to byłoby: "dont't iterate". To, co wydaje się robić, jest całkowicie wykonalne za pomocą zwykłego SQL: 'wstaw do tabel wyników (a, b, c) wybierz x, y, z od użytkowników;' – wildplasser
Jak zauważyłem w odpowiedzi, 'old_seasonnum' nie jest zaznaczone w tym miejscu z 'user_data.users', ale w poprzednim punkcie. –
Dozwolone jest użycie stałej (lub zmiennej, w plpgsql lub w przygotowanych instrukcjach), gdzie potrzebne jest wyrażenie: 'wstaw do foo (a, b, c) wybierz 42, y, z z paska;' Uwaga: w Twój kod 'old_seasonnum' nie jest nawet zdefiniowany. – wildplasser