編寫一個函數計算學生某一門課程在班級內的排名。
表結構如下:
create or replace function fun_score_rank( p_in_stuid in number,--學號 p_in_courseid in number --課程ID ) return number is ls_pm number:=0; ls_score number:=0; begin --獲取該學生的成績 select t.score into ls_score from score_ys t where t.stuid = p_in_stuid and t.courseid = p_in_courseid; --獲取成績比該學生高的人數 select count(1) into ls_pm from score_ys t where t.courseid = p_in_courseid and t.score>ls_score; --得到該學生的成績排名 ls_pm:=ls_pm+1; return ls_pm; exception when no_data_found then dbms_output.put_line('該學生的課程:'||p_in_courseid|| '的成績在成績表中找不到'); end;
使用函數
select fun_score_rank('1001','2') 排名1, fun_score_rank('1002','1') 排名2 from dual;
