1 / 3
文档名称:

数据库系统概论实验04PLSQL.doc

格式:doc   大小:32KB   页数:3
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据库系统概论实验04PLSQL.doc

上传人:mh900965 2018/2/6 文件大小:32 KB

下载得到文件列表

数据库系统概论实验04PLSQL.doc

文档介绍

文档介绍:实验四 PL/SQL实验
统计数据结构的成绩分布情况,即按照各分数段统计人数
创建存储过程
创建需要的表结构。
因为存储过程在执行后,在客户端并没有返回值,因此需要建立一个表存放执行后的结果,并返回到客户端显示。
如:建立表RANK,其中第一列DIVISION(char 20)显示成绩分段划分,第二列NUMBER(int)显示的是成绩在该分数段的学生人数。
编写存储过程
*create procedure或create proc:创建存储过程
*设置参数,给出要查询的课程名称
*SQL-STATEMENT:
①定义变量DECLARE
如:DECLARE
***@b60 int,
***@a60b70 int,
***@a70b80 int,
***@a80b90 int,
***@a90 int,
***@O INT
②查出作为输入参数的课程名存不存在,如果不存在,给出错误信息并退出
*not exists:不存在
*RAISERROR:返回用户定义的错误信息并设系统标志,记录发生错误。通过使用 RAISERROR 语句,客户端可以从 sysmessages 表中检索条目,或者使用用户指定的严重度和状态信息动态地生成一条消息。这条消息在定义后就作为服务器错误信息返回给客户端。
如:RAISERROR('输入错误,没有该课程',16,1)
*RETURN:从查询或过程中无条件退出。RETURN 即时且完全,可在任何时候用于从过程、批处理或语句块中退出。不执行位于 RETURN 之后的语句。
③若课程名存在,则根据课程名分别统计分数区域人数,并且插入到RANK表中
如:select ***@a60b70=count(SNO) from SC
O=***@O
and GRADE>=60 and GRADE < 70
group O
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
insert into RANK values('[60,70)',***@a60b70)
执行存储过程:EXECUTE
如:EXECUTE statistic_mark '数据库'
查看结果是否正确
CREATE TABLE RANK
(DIVISION CHAR(20),
NUMBER INT);
CREATE Procedure TT
AS DECLARE
***@b60 INT,
***@a60b70 INT,
***@a70b80 INT,
***@a80b90 INT,
***@a90 INT,
***@O INT
SELECT ***@O
FROM SC
O IN
( O
FROM Course
AME='数据结构')
IF NOT EXISTS
( O
FROM SC
O IN
( O
FROM Course
AME='数据结构')
)
BEGIN
RAISERROR('输入错误,没有该课程',16,1)
RETURN
END
BEGIN
SELECT ***@b60=COUNT(SNO)
FROM SC
O= ***@O
AND GRADE<60
GROUP O
INSERT I