收藏 分享(赏)

实验五 存储过程和触发器.doc

上传人:hwpkd79526 文档编号:7782082 上传时间:2019-05-25 格式:DOC 页数:6 大小:44.50KB
下载 相关 举报
实验五 存储过程和触发器.doc_第1页
第1页 / 共6页
实验五 存储过程和触发器.doc_第2页
第2页 / 共6页
实验五 存储过程和触发器.doc_第3页
第3页 / 共6页
实验五 存储过程和触发器.doc_第4页
第4页 / 共6页
实验五 存储过程和触发器.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、实验五 存储过程和触发器【实验目的】理解存储过程概念、类型;掌握各种存储过程创建方法和查看、修改、删除存储过程方法。【实验内容】1、使用 T-SQL 语句创建存储过程(1)创建不带参数存储过程1)创建一个从 student 表查询学号为 95002 学生信息的存储过程 proc_1,其中包括学号、姓名、性别、出生日期、系别等;调用过程 proc_1 查看执行结果。2)在选课系统数据库中创建存储过程 proc_2,要求实现如下功能:产生学分为 4 的课程学生选课情况列表,其中包括学号、姓名、性别、课程号、学分、系别等。调用过程 proc_2 查看执行结果。(2)创建带参数存储过程创建一个从 st

2、udent 表中按学生学号查询学生信息的存储过程 proc_3.其中包括:学号、姓名、性别、出生日期、系别等。查询学号通过执行语句中输入。(3)创建带输出参数存储过程创建一个从 sc 表查询一门课程考试成绩总分存储过程 proc_4,要求查询的课程号通过执行语句中的输入参数course_no 传递给存储过程,ssum_grade 作为输出参数用来存放查询得到的总分。执行此过程时用 declare 声明临时变量sum_grade_output 接收查询的总分。参考:use 选课系统gocreate proc student_proc4startdate datetime,enddate date

3、time,recordcount int outputAsIf startdate is null or enddate is null BeginRaiserror(null value are invalid,5,5)ReturnEndSelect * from 学生信息表Where birthday between startdate and enddateSelect recordcount=rowcountgo执行语句:use 选课系统godeclare recordn intexec student_proc4 01/01/1988,01/01/1990,recordn outpu

4、tprint the order count is:+str(recordn)(4)创建带重编译和加密的存储过程在 sc 表中创建一个带创建带重编译和加密的存储过程 proc_exp5,要求实现如下功能:输入学生学号、根据该生选课的总学分显示提示信息,如果总学分60Print 该学生综合成绩合格,成绩为+convert(char(2),savg)+分ElsePrint 该学生综合成绩不合格,成绩为+convert(char(2),savg)+分go执行:Use 选课系统GoExec proc_exp4 950012、使用 TSQL 语句查看、修改和删除存储过程(1)查看存储过程 proc_2、

5、proc_5 定义(2)删除存储过程 proc_13、使用 TSQL 语句实现触发器定义。(1)为表 sc 创建一个插入触发器,当向表 sc 中插入数据时,如果成绩 grade 大于等于 60 分,该生就能得到相应学分,否则得不到学分。Use 选课系统GoIf exists(select name from sysobjects where name= credit_insertand type=tr)Drop trigger credit_insertgocreate trigger credit_insert on scfor insertasdeclare credit0 tinyint

6、declare grade0 tinyintselect grade0=inserted.grade from insertedselect credit0=course.credit from course,insertedwhere o=oif (grade0=60)beginupdate sc set sc.credit=credit0from sc,insertedwhere o=o and sc.sno=inserted.snoendgo执行:Use 选课系统GoInsert into sc(sno,cno,grade,credit)Values (95001,001,80,0)(2

7、)为表 student 创建一个删除触发器,当删除表 student 中一个学生的资料时,将表 sc 中相应的成绩数据删除。use 选课系统goIf exists(select name from sysobjects where name= student_deleteand type=tr)Drop trigger student_deletegocreate trigger student_delete on Studentfor deleteasdeclare Sno1 intselect Sno1=deleted.Sno from deleteddelete from SC wher

8、e SC.Sno=Sno1(3)为表 sc 创建一个更新触发器,当更改表 sc 的成绩数据时,如果成绩由原来的小于 60 分更改为大于 60 分,该学生能得到相应学分,如果由原来的大于等于 60 更改为小于等于 60 分,则相应学分改为 0.use 选课系统goIf exists(select name from sysobjects where name= credit_updateand type=tr)Drop trigger credit_updateGocreate trigger credit_update on Scfor updateasdeclare credit0 tiny

9、intdeclare grade0 tinyintselect grade0=inserted.grade from insertedselect credit0=course.credit from course,insertedwhere o=oif (grade0=60)beginupdate sc set sc.credit=credit0from sc,insertedwhere o=o and sc.sno=inserted.snoendelsebegin update sc set sc.credit=0from sc,insertedwhere o=o and sc.sno=inserted.snoend执行:use 选课系统goupdate sc set grade=35where sno=95001 and cno=001

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报