(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
执行结果如下: