实验七 使用PLSQL编写存储过程访问数据库
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验七使用PL/SQL编写存储过程访问数据库
一、实验目的
1、熟悉存储过程编译过程、工作原理及其优点;
2、熟悉使用存储过程来进行数据库应用程序的设计。
二、实验条件
1、具有局域网的计算机机房一个;
2、SQL SERVER2000或SQL SERVER2005软件。
三、实验内容
对教材“学生-课程”数据库(student表,course表,sc表),编写存储过程,分别完成下面功能:
create table Student
(Sname char(12)primary key,
Ssex char(2),
Sage int,
Sdept char(12)
);
create table Course
(Cname char(12)primary key,
Cpno int,
Ccredit int
);
create table SC
(Cno char(12)primary key,
Grade int
);
①建立存储过程完成统计“离散数学”的成绩分布情况,即按照各分数段统计人数;
create procedure Proc_1
as
select count(*),Cname,Grade from sc where
cname in(select Cname from Course where cname='db');
exec Proc_1;
②建立存储过程完成统计任意一门课的平均成绩;
create procedure Proc_2
as
select avg(grade),cname from sc where camme='db'
exec Proc_2;
③建立存储过程完成将学生选课成绩从百分制改为等级制(即A、
B、C、D、E);
create or replace procedure change_critical()
as declare
chgrade char(1);
currecord record;
begin
alter table SC add column(newgrade char(1));
for currecord in select*from SC loop
if currecord.grade<60then chgrade='E';
else if currecord.grade<70then chgrade='D';
else if currecord.grade<80then chgrade='C';
else if currecord.grade<90then chgrade='B';
else chgrade='A';
end if;
update SC set newgrade=chgrade
where sno=currecord.sno and cno=o;
end loop;
alter table SC drop column grade;
alter table SC rename newgrade to grade;
end;
④建立存储过程完成对学生表的批量插入数据,插入数据的条数作为其中一个参数,另一个参数为学号起始学号,其它数据格式自行定义(如每次插入100条数据);
create procedure proc_4
@count int,
@startsno char(9)
as
declare@loop int
set@loop=0
while@loop<@count
begin
insert into student(sno,sname,ssex,sage,sdept)
values(@startsno,'zj','M',20,'IS')
set@loop=@loop+1
set@startsno=@startsno+1
end
exec proc_4100,'20130901';
要求:提交源程序并标识必要的注释。
保证程序能正确编译和运行,认真填写实验报告。