第3课 实验八(上) 3110305129 潘聪.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《数据库系统概论》实验报告 实验题目:实验八(上) 用户自定义函数和触发器 日期 2013.6.18 班级 计算机1105 姓名 潘聪3110305129 实验环境:SQL Server 2005 实验目的: 1、掌握SQLServer中用户自定义函数的使用方法。 2、掌握SQL Server中触发器的使用方法。 实验内容: 创建一个返回标量值的用户定义函数 ectangleArea:输入矩形的长和宽就能计算矩形的面积。自选2种实例调用该函数。 create function RectangleArea(@a int,@b int) returns int as begin return @a*@b end declare @area int execute @area=RectangleArea 3,5 print (矩形面积是:) print @area declare @area int execute @area=RectangleArea 7,8 print (矩形面积是:) print @area 创建一个用户自定义函数(内嵌表值函数create function Search (@sdept char(10)) returns table as return ( select sc.sno 学号,student.sname 姓名,course.cname 课程名,sc.grade 成绩, student.sdept 系别from sc,student,course where course.cno=sc.cno and sc.sno = student.sno and sdept=@sdept ) select * from Search(cs) 创建一个作用在P表上的触发器P_checks,确保用户在插入或更新P表的WEIGHT值时,所提供的WEIGHT值介于20与40之间,否则给出错误提示并回滚此操作。请测试该触发器,测试方法自定。 create trigger P_checks on p for insert as begin declare @weight int select @weight=weight from inserted if @weight10 or @weight20 begin RAISERROR(weight 必须在~20之间!,16,1) ROLLBACK TRANSACTION end end insert into p(pno,pname,color,weight) values(p7,刀片,红,40) insert into p(pno,pname,color,weight) values(p7,刀片,红,15) select * from p 创建一个作用在J表上的触发器J_Update,禁止同时修改项目的名称和所在城市,并进行相应的错误提示。请测试该触发器。测试方法自定。 create trigger J_Update on j for update as begin declare @jname1 char(10),@city1 char(10),@jname2 char(10),@city2 char(10) select @jname1=jname,@city1= city from inserted select @jname2=jname,@city2= city from deleted if @jname1@jname2 and @city1@city2 begin RAISERROR(不能同时修改项目名称和项目地点!,16,1) ROLLBACK TRANSACTION end end update j set jname=建筑 ,city=上海 where jno=j1 update j set jname=建筑 where jno=j1 select * from j 学生表(Student)中存放学生的记录,学生选修表 (SC) 中存放学生的修课及成绩情况。创建一个触发器ScDel_Cascade,当删除Student中的数据时,数据表SC中有关刚刚删除学生的修课成绩信息也能被级联删除掉。测试该触发器,测试方法自定。 create trigger ScDel_Cascade on student for delete as begin declare @sno char(10) select @sno=sno from deleted delete from sc where sno=@sno end delete from student where sname=李勇

文档评论(0)

0520 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档