林强 数据库实验报告 下载本文

(2)建立一个查询指定读者号的阅读信息的存储过程List_jy,输入参数为读者号,如果没有输入读者号,则要输出提示信息。建立这个存储过程的语句如下所示。

create procedure List_jy

@p_dzh char(5) = null

as

if @p_dzh is null begin

print ‘请输入一个读者号’ return end else

select 编号,姓名,书名,借阅时间 from 读者,借阅,图书

where 读者.编号=借阅.读者编号 and 借阅.书号=图书.书号

and 读者.编号=@p_dzh

2. 提高操作实验

在学生-课程数据库中用Transact-SQL语句描述下列功能:

(1)为学生表建立一个名TRI_INSERT的INSERT触发器。功能是当用户向学生表添加数据时,同时也把这些数据添加到stu表中。其中:学生表和表stu的结构相同。

语句:CREATE TRIGGER TRI_INSERT

ON Student FOR INSERT AS

INSERT INTO STU

SELECT * FROM INSERTED 执行结果如下:

(2)为学生表建立一个名TRI_DELETE的DELETE触发器。功能是当用户从学生表删除数据时,同时把这些要删除的数据添加到stu表中。其中:表student和表stu的结构相同。

语句:CREATE TRIGGER TRI_DELETE

ON Student FOR DELETE AS

INSERT INTO STU

SELECT * FROM DELETED

执行结果如下:

(3)创建一查询存储过程,过程名称为P_CX。参数是学号,输出信息是指定学号所应的姓名、课程名称、成绩。运行时若没有指定学号,则提示请输入学号;若学号不存在则提示学号不存在。 语句:Create procedure P_CX

@Sno char(10) =null as

if @Sno is null begin

print '请输入一个学号' return end

else if(not exists

(select * from Student where Sno=@Sno)) print '学号不存在' else

select Sname,Cname,Credit from Student,Course,SC where Student.Sno=SC.Sno and Course.Cno=SC.Cno and Student.Sno=@Sno

执行结果如下:

(4)创建一统计存储过程,过程名称为P_CJTJ。参数是学号,输出信息是指定学号的姓名、选课门数、平均分、总分、最高分、最低分。运行时若没有指定学号,则提示输入学号;若学号不存在则提示学号不存在。 语句:create procedure P_CIJJ

@Sno char(10) =null as

if @Sno is null begin

print '请输入一个学号' return end

else if(not exists

(select * from SC where Sno=@Sno)) print '学号不存在' else

select Sno,count(*) 门数,avg(Grade) 平均分,sum(Grade) 总分,max(Grade) 最高分,min(Grade) 最低分 from SC group by Sno

having Sno=@Sno

执行结果如下: