- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验七 存储过程与触发器
实习对象
地理信息系统专业本科生
二、实习目的
掌握分组汇总、分类汇总及各类子查询实现方法及编程技巧。
实习分组及成绩评定
每人一组,独立完成;按题目完成质量打分。
四、实习内容
完整地列出实验二中你所创建的三个数据表,完成以下操作,要求写出执行的代码及最终的运行结果,除第一题外都在查询设计器中使用Transact-SQL语言完成。(100分,每题10分)
学生基本信息表S:
学生选课表SC:
课程基本信息表C:
1、创建一个有输入参数的存储过程proc_student1,用于显示指定学号的学生基本信息。(10分,每题5分)
(1)创建该存储过程;
create procedure proc_student1 as
select * from s where 学号=j0001exec proc_student1
2、创建存储过程proc_student2,根据学生的姓名和所在的系显示该学生的基本信息。如果未提供姓名和系,该存储过程将显示你本人的信息。(10分,每题5分)
(1)创建该存储过程;
create procedure proc_student2
@name char(6)=xuwejie,
@xi char(10)=地信 as
select * from s where 姓名=@name
3、创建一个带输出参数的存储过程proc_student3,用于显示指定学号的学生的各门课程的平均成绩。执行存储过程,返回学号为你本人的平均成绩。(10分,每题5分)
(1)创建该存储过程;
create procedure proc_student3
@num char(6),
@savg smallint output
as begin
select @savg=avg(cast(成绩as bigint))
from s,sc
where s.学号=sc.学号and s.学号=@num
end
declare @savg_value smallint
exec proc_student3 J0001,@savg_value output
select @savg_value as 平均成绩
4、创建存储过程proc_student4,查询指定课程的最高成绩,如果最高成绩大于90分,则返回状态代码1,否则返回0。(10分,每题5分)
(1)创建该存储过程;
create procedure proc_student4
@paracno varchar(3)
as
if(select max(成绩)
from sc
where 课程号=@paracno) 90
return 1
else
return 0declare @return_status int
exec @return_status = proc_student4 @paracno=j0001
select return status = @return_status
5、创建存储过程proc_student5 ,该存储过程可以向S表中添加记录。(10分,每题5分)
(1)创建该存储过程;
create procedure proc_student5
(@学号char(6),@姓名char(8),@性别char(2),@出生日期datetime,@系varchar(20),@电话char(8))
as begin
insert into s(学号,姓名,性别,出生日期,系,电话)
values(@学号,@姓名,@性别,@出生日期,@系,@电话)
end
return
Go
exec proc_student5 j0007,杨葩飞,男,1954-03-08,飞行系,null
6、在学生选课数据表SC上创建一个触发器trigger_student1 ,该触发器被Insert语句触发,当用户向SC表插入一条新记录时,判断该记录的学号在学生基本信息表S中是否存在,如果存在,插入成功,如果不存在插入失败。(10分)
create trigger trigger_student1
on sc
after insert
as
begin
if (select count(*) from inseserted join
s on inserted.学号=s.学号)=0
begin
rollback tran
print 插入无效记录!
end
End
create trigger trigger_student2
on s
after delete
as
begin
update sc
set 学号=(select 学号from inserted)
where 学号in (
原创力文档


文档评论(0)