实验6 存储过程触发器文档格式.docx
- 文档编号:21809086
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:15
- 大小:108.40KB
实验6 存储过程触发器文档格式.docx
《实验6 存储过程触发器文档格式.docx》由会员分享,可在线阅读,更多相关《实验6 存储过程触发器文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
二实验目的
1.掌握存储过程的定义、执行和调用方法。
2.掌握触发器的创建与使用。
三实验内容
(1)创建存储过程查找姓李的学生的选修课成绩信息。
(2)创建存储过程,统计每个学生的选修课的总成绩,显示成绩最好的前3名学生成绩。
(3)创建存储过程,查找某门课的最高分(带输入参数的存储过程)。
(4)创建存储过程,统计某个同学的平均分并返回统计结果。
(带输入和输出参数的存储过程)
(5)创建存储过程,统计某门课选修的人数,将人数返回。
(带返回值的存储过程)
(6)创建存储过程,统计选修课程最多的学生的基本信息。
(存储过程的嵌套)
(1)定义一个BEFORE行级触发器credit_TRIGER,当为C表插入新的课程信息时,若学分大于5分,自动修改为5分。
(2)定义一个AFTER行级触发器,当SC表的成绩发生变动时,就自动在成绩变化表sc_log中增加一条新的纪录,该新纪录包括:
操作者名称、操作日期、操作类型。
(3)建立一个DELETE触发器,针对于SC表,每次只能删除一条信息。
(4)建立一个UPDATE的触发器,不允许用户更改学生学号,若更改学号,给出提示信息:
学号不允许更改。
(5)执行相应的SQL语句,触发上述定义的触发器。
(6)删除触发器credit_TRIGER。
四实验要求
1.掌握存储过程的定义和使用方法。
2.掌握存触发器的定义和使用方法。
3.掌握带输入参数、输出参数、返回值的存储过程的定义和使用。
了解存储过程的嵌套使用方法。
4.报告中由同学写明具体的操作意图(文字描述)、操作命令、和执行结果(文字描述+适当截图)。
5.对于重要的运行界面和结果窗口,可以用Alt+PrintScreen来截取当前窗口,并粘贴到实验报告中。
五实验步骤
CREATEPROCEDURE
创建存储过程,存储过程是保存起来的可以接受和返回用户提供的参数的Transact-SQL语句的集合。
可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。
也可以创建在Microsoft®
SQLServer™启动时自动运行的存储过程。
语法
CREATEPROC[EDURE]procedure_name[;
number]//新存储过程的名称
[{@parameterdata_type}
[VARYING][=default][OUTPUT]
][,...n]
[WITH
{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]
[FORREPLICATION]
ASsql_statement[...n]//指定过程要执行的操作,过程中要包含的任意数目和类型的Transact-SQL语句
RTRIM
截断所有尾随空格后返回一个字符串。
RTRIM(character_expression)
参数
character_expression
由字符数据组成的表达式。
character_expression可以是常量、变量,也可以是字符或二进制数据的列。
SQL语句:
CREATEPROCEDUREli
AS
SELECT*fromscwheresnoin(selectsnofromswheresnamelike'
李%'
)
如图1-1所示:
图1-1
调用存储过程:
EXECLi
如图1-2所示:
图1-2
原S表中数据:
SELECT*
FROMS
如图1-3所示:
图1-3
CREATEPROCEDUREtotal
SELECTtop3sum(grade)fromscgroupbysnoorderbysum(grade)desc
如图1-4所示:
图1-4
EXECTotal
如图1-5所示:
图1-5
原表SC中所有学生的成绩之和:
SELECTsum(grade)fromscgroupbysnoorderbysum(grade)desc
如图1-6所示:
图1-6
CREATEPROCEDUREmax2
@courseint
SELECTmax(grade)as最高分fromscwherecno=@course
如图1-7所示:
图1-7
execmax2@course=02
如图1-8所示:
图1-8
原表sc中的数据:
selectdistinctcno,gradefromscorderbycno
如图1-9所示:
图1-9
CREATEproceduresavg
@snoint,
@avgintoutput
as
select@avg=avg(grade)
fromsc
wheresno=@sno
如图1-10所示:
图1-10
原SC表中1号学生平均分:
selectavg(grade)
fromSC
wheresno=01
如图1-11所示:
图1-11
declare@avgint
execsavg'
01'
@avgoutput
select@avgas'
平均分'
如图1-12所示:
图1-12
CREATEprocedurescount
@cnochar,
@countintoutput
select@count=count(sno)
fromSC
wherecno=@cno
如图1-13所示:
图1-13
原表SC中的数据:
select*
orderbycno
如图1-14所示:
图1-14
declare@countint
execscount'
1'
@countoutput
PRINT'
选修课的人数'
+RTRIM(@count)
如图1-15所示:
图1-15
CREATEproceduresnumber
froms
wheresnoin(
selecttop1sno
groupbysno
orderbycount(cno)desc)
如图1-16所示:
图1-16
orderbysno
如图1-17所示:
图1-17
execsnumber
如图1-18所示:
图1-18
CREATETRIGGER
创建触发器,触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行。
Microsoft®
SQLServer™允许为任何给定的INSERT、UPDATE或DELETE语句创建多个触发器。
CREATETRIGGERtrigger_name//触发器的名字trigger_name
ON{table|view}//对于那个表或视图进行创建的
[WITHENCRYPTION]//是否可见
{
{{FOR|AFTER|INSTEADOF}{[INSERT][,][UPDATE]}//在插入还是更新之前或之后或INSTEADOF时
[WITHAPPEND]//如果有重名,添加
[NOTFORREPLICATION]//表示当复制进程更改触发器所涉及的表时,不应执行该触发器。
AS//触发条件
[{IFUPDATE(column)
[{AND|OR}UPDATE(column)]
[...n]
|IF(COLUMNS_UPDATED(){bitwise_operator}updated_bitmask)
{comparison_operator}column_bitmask[...n]
}]
sql_statement[...n]
}
createtriggercredit_TRIGER
onCforinsert
as
declare@ccreditint
updateC
setCcredit=5
whereCcredit>
5
如图2-1所示:
图2-1
插入数据:
insertintoC
values('
6'
'
高等数学'
2'
);
查询表C中的数据:
fromc
如图2-2所示:
图2-2
createtriggerscupdate_TRIGER
onSCafterupdate
insertintosc_log(usename,usetime,usetype)
values(user,convert(varchar(12),getdate(),1),'
update'
如图2-3所示:
图2-3
更改数据:
updateSC
setGrade=90
whereSno='
andCno='
如图2-4所示:
图2-4
createtriggerscdelete_TRIGER
onSCfordelete
declare@row_cntint
select@row_cnt=count(*)fromdeleted
if@row_cnt>
1
begin
print'
每次只能删除一条信息'
rollbacktransaction
end
如图2-5所示:
图2-5
删除数据:
delete
如图2-6所示:
图2-6
createtriggersupdate_TRIGER
onSforupdate
ifupdate(sno)
学号不允许修改'
如图2-7所示:
图2-7
更改学号:
updateS
setsno='
08'
如图2-8所示:
图2-8
droptriggercredit_TRIGER
如图2-9所示:
图2-9
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验6 存储过程触发器 实验 存储 过程 触发器