Tôi đang tạo một hàm trong ngôn ngữ kịch bản lệnh pgsql, và những gì tôi muốn làm trong thời điểm này là lặp qua kết quả của truy vấn và cho mỗi hàng làm một cái gì đó cụ thể. Thử hiện tại của tôi là như sau, trong đó temprow
được khai báo là temprow user_data.users%rowtype
. Mã được đề cập đến là:PostgreSQL - Lặp lại kết quả truy vấn
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;
Tuy nhiên, tôi nhận được lỗi sau từ đây: ERROR: relation "temprow" does not exist
. Nếu nó rõ ràng những gì tôi muốn được thực hiện, bạn có thể chỉ cho tôi đúng cách để làm điều đó?
Cách đúng để làm điều đó sẽ là: "dont't lặp". Những gì bạn có thể làm là hoàn toàn khả thi khi sử dụng SQL đơn giản: 'chèn vào bảng thành tích (a, b, c) chọn x, y, z từ người dùng; ' – wildplasser
Như tôi thấy trong câu trả lời,' old_seasonnum' không được chọn tại điểm này từ 'user_data.users', nhưng ở điểm trước đó. –
Nó được phép sử dụng hằng số (hoặc một biến, trong câu lệnh plpgsql hoặc trong các câu lệnh đã chuẩn bị) khi cần biểu thức: 'chèn vào foo (a, b, c) chọn 42, y, z từ thanh;' Ghi chú: trong mã của bạn 'old_seasonnum' thậm chí không được định nghĩa. – wildplasser