数据库实验——触发器与存储过程

数据库实验——触发器与存储过程

掌握某主流DBMS的SQL编程语言,在前面创建的数据库基础上,定义BEFORE(for)触发器和AFTER触发器;掌握数据库存储过程定义、存储过程运行,存储过程更名,存储过程删除,存储过程的参数传递。
实验步骤
1、创建一个不带参数的简单存储过程
(1)创建存储过程sp_avggrade,实现查询每门课程学生的平均成绩的功能;

create PROC sp_avggrade
as
begin
    select AVG(grade) from sc group by cno;
end  


(2)调用该存储过程,实现查询。

execute sp_avggrade;


2、创建一个带输入参数的存储过程
(1)创建存储过程sp_course_avggrade, 实现通过输入课程编号参数查询指定课程编号的课程平均成绩的功能;

create PROC sp_coures_grade (@a int)
as
begin
select AVG(grade) from sc where cno = @a;
end


(2)调用该存储过程,获取指定课程的平均成绩

execute sp_course_avggrade 2;


3、创建一个带输入输出参数的存储过程
(1)创建存储过程sp_sdept _student,实现根据用户输入的院系编号参数,查找该学院的学生人数,并以变量形式输出的功能;

create proc sp_sdept_student2 (@a varchar(15),@b int output)
as
begin
select @b = COUNT(sno) from student where sdept = @a;
end


(2)调用该存储过程,以返回变量的形式获取相应院系的学生人数。

declare @num int;
execute sp_sdept_student2 '计科',@num output;
print @num;


4、触发器的创建与使用
(1)在学生表上创建触发器,实现学生表中删除学生记录时,成绩表中该学生成绩记录的级联删除;

create trigger T_ST
ON student
after delete
as
delete from sc where sno = (select sno from deleted)

(2)在选课表上创建触发器,若录入的成绩大于100分,小于0分,则拒绝插入记录并显示;

create trigger T_SC
ON sc
after insert
as
if (select grade from inserted)<1 or (select grade from inserted)>100
begin
print 'grade wrong'
rollback transaction
end


 

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值