在 Oracle PL/SQL 中循环遍历 table

Loop through a table in Oracle PL/SQL

我已经完成了 SQL 查询,但没有完成任何使用循环的过程编写,所以我在这里迷路了。我正在使用 Oracle SQL Developer。可以在 SQL 或 PL/SQL

中完成

我有一个 table 类似于:

Person_ID Score Name  Game_ID
1         10    jack  1
1         20    jack  2
2         15    carl  1
2         3     carl  3
4         17    steve 1

我如何遍历这个 table 以便我可以获取玩家所有游戏的总得分。结果将是这样的:

Person_ID Score Name
1         30    jack
2         18    carl
4         17    steve

如果我只想抓取游戏 1 2,还要加分吗?


编辑:抱歉不清楚,但我确实需要用一个循环来做这个,即使没有它也可以完成。

post版后的解决方案

此程序列出给定 game_id 的分数。如果您省略参数,所有游戏将被汇总:

create or replace procedure player_scores(i_game_id number default null) as 
begin
  for o in (select person_id, name, sum(score) score
      from games where game_id = nvl(i_game_id, game_id)
      group by person_id, name)
  loop
    dbms_output.put_line(o.person_id||' '||o.name||' '||o.score);
  end loop;
end player_scores;

前一个解法:

你不需要程序,只需要简单的查询:

select person_id, name, sum(score)
  from your_table
  where game_id in (1, 2)
  group by person_id, name