数据库技术实验六

上传人:无*** 文档编号:88542643 上传时间:2022-05-11 格式:DOC 页数:6 大小:750KB
收藏 版权申诉 举报 下载
数据库技术实验六_第1页
第1页 / 共6页
数据库技术实验六_第2页
第2页 / 共6页
数据库技术实验六_第3页
第3页 / 共6页
资源描述:

《数据库技术实验六》由会员分享,可在线阅读,更多相关《数据库技术实验六(6页珍藏版)》请在装配图网上搜索。

1、 . 课程名称数据库技术实验成绩实验名称存储过程和触发器的使用学号班级日期14.11.25实验目的:1. 掌握存储过程的使用方法;2. 掌握触发器的实现方法;实验平台:利用RDBMS(SQL Server 2008)与其交互查询工具(查询分析器)来操作T-SQL语言;实验容:1. 存储过程(1) 创建存储过程,要求当一个员工的工作年份大于6年时将其转到经理办公室工作。alterprocedureyuangong_infolEmployeeIDchar(6),namenchar(20)asbegindeclareyearintsetyear=(selectWorkYearfromEmployee

2、swhereEmployeeID=EmployeeID)declareDepartmentIDchar(3)setDepartmentID=(selectDepartmentIDfromDepartmentswhereDepartmentName=name)if (year6)updateEmployeessetDepartmentID=DepartmentIDwhereEmployeeID=EmployeeIDEndexecdbo.yuangong_infol000000,经理办公室(2) 创建存储过程,根据每个员工的学历将收入提高500元。alterprocSA_INenuchar(6)a

3、sbeginupdateSalarysetInCome=InCome+500fromSalary,EmployeeswhereEmployees.EmployeeID=Salary.EmployeeIDandEducation=enuendselectInComefromSalary,EmployeeswhereSalary.EmployeeID=Employees.EmployeeIDandEducation=本科goexecdbo.sa_in本科goselectInComefromSalary,EmployeeswhereSalary.EmployeeID=Employees.Employ

4、eeIDandEducation=本科selectInComefromSalary,EmployeeswhereSalary.EmployeeID=Employees.EmployeeIDandEducation=本科(3) 创建存储过程,使用游标计算本科与以上学历的员工在总员工数中的比例。declareeduvarchar(10),part_countint,all_countint;declaremycursorcursorforselectdistincteducation,COUNT(education)over(partitionbyeducation)aspart_count,CO

5、UNT(education)over()asall_countfromEmployeesopenmycursorfetchnextfrommycursorintoedu,part_count,all_countwhileFETCH_STATUS=0beginprintedu+占总人数比例:+convert(varchar(100),convert(numeric(38,2),part_count/1.0/all_count*100)+%fetchnextfrommycursorintoedu,part_count,all_countendclosemycusordeallocatemycurs

6、or(4) 使用命令方式修改与删除一个存储过程。ifexists(selectworkyearfromEmployeeswhereworkyear=3)dropprocedureworkyear2. 触发器(1) 对于YGGL数据库,表Employees的Employeeid列与表Salary的Employeeid列应满足参照完整性规则,请用触发器实现两个表间的参照完整性。createtriggerSalaryins0onSalaryforinsert,updateasbeginif(selectemployeeidfrominserted)notin(selectEmployeeIDfrom

7、Employees)rollbackendcreatetriggerEmployeesupdate0ondbo.EmployeesforupdateasbeginupdateSalarysetemployeeid=(selectemployeeidfrominserted)whereemployeeid=(selectemployeeidfromdeleted)endcreatetriggerEmployeesdelete0onEmployeesfordeleteasbegindeletefromSalarywhereemployeeid=(selectemployeeidfromdelete

8、d)end(2)当修改表Employees时,若将Employees表中员工的工作时间增加1年,则将收入增加500,若增加2年则增加1000,依次增加。若工作时间减少则无变化。createtriggerem_workyearonEmployeesafterupdateasbegindeclareaint,bintseta=(selectworkyearfrominserted)setb=(selectworkyearfromdeleted)if(ab)updateSalarysetincome=income+(a-b)*500whereenployeeidin(selectEmployeesI

9、Dfrominserted)endupdateEmployeessetworkyear=12whereEmployeesID=000001(3)创建UPDATE触发器,当Salary表中InCome值增加500时,outCome值则增加50。createtriggersa_incomeonSalaryforupdateasbeginif(selectincomefrominserted)-(selectincomefromdeleted)=500)updateSalarysetoutcome=outcome+50whereenployeeid=(selectenployeeidfrominse

10、rted)endselectincome,outcomefromSalarywhereenployeeid=000001(5) 创建INSTEAD OF触发器,实现向不可更新视图插入数据。createviewa_viewasselectEmployees.EmployeesID,name,workyear,income,outcomefromEmployees,SalarywhereEmployees.EmployeesID=Salary.enployeeidgocreatetriggergxstona_viewinsteadofinsertasbegindeclareEichar(6),na

11、mechar(10),wytinyint,icfloat,ocfloatselectEi=EmployeesID,name=name,wy=workyear,ic=income,oc=outcomefrominsertedinsertintoEmployees(EmployeesID,name,workyear)values(Ei,name,wy)insertintoSalaryvalues(Ei,ic,oc)endinsertintoa_viewvalues(000011,小芳,3,2000,1500)select*froma_viewwhereEmployeesID=000011(5)创建DDL触发器,当删除数据库时,提示“无法删除”并回滚删除操作。createtriggertable_deleteondatabaseafterdrop_tableasprint不能删除表rollbacktransactiongodroptableYGGL实验总结(结论或问题分析): 在本次实验中,感觉很难,对触发器和存储过程不是很了解,最后老师讲了,自己通过讲的虽然说做出来了,但是还是有不明白的地方,需要自己在下面复习巩固。6 / 6

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!