循环遍历Oracle PL / SQL中的表

时间:2015-02-07 21:02:30

标签: oracle loops plsql

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

我有一张类似这样的表:

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

如何循环使用此表,以便我可以获得所有比赛的总得分。结果将是这样的:

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

还有额外的功劳,如果我只想抓住说游戏1 2?


编辑:很抱歉不清楚,但我确实需要循环播放,即使可以在没有它的情况下完成。

1 个答案:

答案 0 :(得分:12)

发布后的解决方案

此程序列出给定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