首页 新闻 会员 周边

oracle的包里面写存储过程

0
悬赏园豆:40 [已解决问题] 解决于 2017-12-18 19:06

在oracle包里面创建存储过程,自动计算出每位学生的总成绩和平均成绩,同时,如果学生在课外课程中获得的评价为A ,就在总成绩上加20 分
( 学生成绩表(studnet) ,字段为:stdId(学号、主键),math(数学),article(语文),language(外语),music(音乐),sport(体育),total(总分),average(平均分)
学生课外成绩表(out_school), 字段为:stdId(学号、主键),comment(评价) ),急急急,会的能快点吗

北海君_3的主页 北海君_3 | 初学一级 | 园豆:124
提问于:2017-12-18 15:40
< >
分享
最佳答案
0

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;

 

 

 

收获园豆:40
哟,嘟嘟有糖☄⊙ω⊙ | 初学一级 |园豆:9 | 2017-12-18 16:23
其他回答(2)
0

创建包的时候记得有个例子啊,包里就是放存储过程的

数据酷软件 | 园豆:130 (初学一级) | 2017-12-18 16:01

我的例子里没有存储过程

支持(0) 反对(0) 北海君_3 | 园豆:124 (初学一级) | 2017-12-18 16:03

@闽之君者: 话说真的是studnet,你确定不是student?哈哈

0
dudu | 园豆:30994 (高人七级) | 2017-12-18 16:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册