在oracle包里面创建存储过程,自动计算出每位学生的总成绩和平均成绩,同时,如果学生在课外课程中获得的评价为A ,就在总成绩上加20 分
( 学生成绩表(studnet) ,字段为:stdId(学号、主键),math(数学),article(语文),language(外语),music(音乐),sport(体育),total(总分),average(平均分)
学生课外成绩表(out_school), 字段为:stdId(学号、主键),comment(评价) ),急急急,会的能快点吗
create or replace package PKG_TOTALSCORE is
procedure GetTOTALSCORE(
stdno in number,--学号
cur_OUT out pkg_general.ROW_CURSOR
);
end PKG_TOTALSCORE;
上面为声明,一下为过程体
procedure GetTOTALSCORE(
stdno in number,--学号
cur_OUT out pkg_general.ROW_CURSOR
)
as
totalscore number;
avgscore number;
comment1 varchar2;
begin
select sum(math,article,language,music,sport) into totalscore from studnet where stdId=stdno;
select avg(math,article,language,music,sport) into avglscore studnet where stdId=stdno;
select comment into comment1 from studnet where stdId=stdno;
if comment<>'A'
open cur_OUT for
update studnet a set a.total=totalscore where stdId=stdno;
update studnet a set a.average=avgscore where stdId=stdno;
else
open cur_OUT for
update studnet a set a.total=totalscore+20 where stdId=stdno;
update studnet a set a.average=avgscore where stdId=stdno;
end GetTOTALSCORE;
end PKG_TOTALSCORE;
创建包的时候记得有个例子啊,包里就是放存储过程的
我的例子里没有存储过程
@闽之君者: 话说真的是studnet,你确定不是student?哈哈