使用plsql编写存储过程访问数据库

使用plsql编写存储过程访问数据库

ID:11194178

大小:51.50 KB

页数:5页

时间:2018-07-10

使用plsql编写存储过程访问数据库_第1页
使用plsql编写存储过程访问数据库_第2页
使用plsql编写存储过程访问数据库_第3页
使用plsql编写存储过程访问数据库_第4页
使用plsql编写存储过程访问数据库_第5页
资源描述:

《使用plsql编写存储过程访问数据库》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一实验目的:熟悉使用存储过程来进行数据库应用程序的设计。二实验平台:在实验1中所安装的RDBMS及其PL/SQL执行引擎。编程工具自选。三实验内容和要求:对学生-课程数据库编写存储过程,完成以下一些功能:1.统计“离散数学”课程的成绩分布情况,即按照各分数段来统计人数2.统计任意一门课程的平均成绩3.将学生选课成绩从百分制改为等级制(即ABCDE)要求:提交源程序并标识必要的注释。保证程序能正确地编译和运行,认真填写实验报告报告题目:使用PL/SQL编写存储过程访问数据库姓名:XXX日期:2012.5.24实验内容及完成情况:在进行实验6之前,已经建立数据库,有St

2、udent,course和SC三张基本表,登陆用户名为'SYSTEM',密码为‘MANAGER’。接下来的实验就是对该数据库编写存储过程。(一)统计“离散数学”课程的成绩分布情况1.创建存储过程(1)创建需要的表结构。因为存储过程执行后在客户端并没有返回值,因此需要建立一个表来存放执行后的结果,并返回到客户端显示。根据实验要求,要统计选修“离散数学”课程的学生的成绩分布,因此需要建立表Rank,其中第一列division显示成绩分数段划分,第二列number显示成绩在该分数段的学生人数。Createtablerank(Divisionchar(20),NumberI

3、NT);(1)编写存储过程。Createorreplaceprocedurestatistic_mark(nameCHAR(50))ASDECLARELess60INT:=0;B60a70INT:=0;B70a80INT:=0;B80b90INT:=0;More90INT:=0;CurcnoCHAR(4);BeginSelectcnoINTOcurcnoFromcourseWherecname=name;IFNOTFOUNOTHENRAISEEXCEPTIONENDIF;SELECTcount(*)INTOless60FROMSCWHEREcno=curcnoAND

4、grade<60;SELECTcount(*)INTOb60a70FROMSCWHEREcno=curcnoANDgrade>=60ANDgrade<70;SELECTcount(*)INTOb70a80FROMSCWHEREcno=curcnoANDgrade>=70ANDgrade<80;SELECTcount(*)INTOb80a90FROMSCWHEREcno=curcnoANDgrade>=80ANDgrade<90;SELECTcount(*)INTOmore90FROMSCWHEREcno=curcnoANDgrade>=90;INSERTINTORA

5、NKVALUES('[0,60)',less60);INSERTINTORANKVALUES('[60,70)',b60a70);INSERTINTORANKVALUES('[70,80)',b70a80);INSERTINTORANKVALUES('[80,90)',b80a90);INSERTINTORANKVALUES('[90,100)',more90);END;2.执行存储过程编写好存储过程statistic_mark之后,在“查询分析器”中选择菜单中的“单事务执行”命令,这样系统就创建好了存储过程然后使用PERFORM调用该过程,在表rank中查看执行的

6、结果。PERFORMPROCEDUREstatistic_mark('离散数学');Select*fromrank;(二)统计任意一门课程的平均成绩1.创建存储过程(1)创建需要的表结构。根据实验要求,要统计任意一门课程的平均成绩,因此需要建立表Avggrade,其中第一列cname显示被统计的课程名称,第二列avgg显示选修了该课程的学生的平均成绩。CREATETABLEAggrade(CnameCHAR(50),AvggNUMERIC(10,6));(1)编写存储过程Createorreplaceprocedurecollect_avggrade()AsDecl

7、are声明变量Curnamechar(50);Curnochar(4);Curavggchar(10,6);Cursormycursorfor声明游标mycursor查询课程号和课程名称Selectcno,cnamefromcourse;BeginOpenmycursor;打开游标Ifmycursor%ISOPENTHEN条件控制,游标打开时进行以下处理LOOP循环控制FETCHmycursorINTOcurcno,curname;游标推进一行取结果送变量EXITWHEN(mycursor%NOTFOUND);如果没有返回值,则退出循环SELECTAVG(gra

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。