没怎么明白第二张表应该是成绩表,我想每个人不止只考一个项目,就相当于1对多记录
怎么个排序方法还有,你的order更新规则是什么,因为每个人有多个科目的成绩,每个科目有多人成绩,怎么排/

解决方案 »

  1.   

    1、没有任何字段的解释
    2、re竟然是char型,排序易出错。
      

  2.   

    /*按照成绩,分课程的名次*/create or replace procedure pro_training ascursor c_training is select count(*) count,course from training group by course;begin
    for c1 in c_training loop
    declare 
    cursor c_grade is select grade, badge from training a where a.course = c1.course order by grade desc;
    v_num number(2):=1;
    begin
    for c2 in c_grade loop
    update training set order1 = v_num where training.badge = c2.badge;
    v_num:= c_grade%rowcount+1;
    end loop;
    end;
    end loop;
    end pro_training;
    /
    执行:
    execute pro_trining
    commit
    /--得到结果,但是相同分数的名次不一样
      

  3.   

    字段推荐用varchar2型,char型在后面的处理中不小心会得不到你想要的结果.