信息学院实验报告学号:114100136姓名:熊忠飞班级:11B课程名称:数据库应用实验名称:自定义函数的设计及使用实验性质:验证性实验实验时间:2013年6月20日实验地点:睿智4号楼212B区一、实验目的1、了解用户自定义函数的类型。2、理解用户自定义函数的概念。3、掌握创建用户自定义函数的方法。4、掌握自定义函数的使用方法。二、实验内容及要求1、创建标量型自定义函数(1)建立一个求阶乘的函数“F1_自定义函数”。(2)调用该函数计算5!*3!-62、创建内联表值型函数(1)创建函数“F2_自定义函数”,通过员工号查询员工姓名、年龄、性别和所在部门(注意不是部门号)。(2)使用该函数,用员工号查询并显示某个员工的姓名、年龄、性别和所在部门。3、设计多语句表值函数(1)创建函数“F3_自定义函数”,并显示指定部门的每个职工参与的项目数,并在最后一行显示该职工参与项目的总数.(2)调用该函数显示某一个部门职工参与项目的情况。(2三、实验步骤及结果1、创建标量型自定义函数createfunctionF1_自定义函数(@nbigint)returnsbigintasbegindeclare@numbigintif(@n0)set@num=0elseif(@n2)set@num=1elsebeginset@num=@nwhile(@n-10)beginset@num=@num*(@n-1)set@n=@n-1endendreturn(@num)endgoselectdbo.F1_自定义函数(5)*dbo.F1_自定义函数(3)-dbo.F1_自定义函数(6)as结果2、创建内联表值型函数usexmglgocreatefunctionF2_自定义函数(@员工号char(4))returnstableasreturn(select姓名as员工姓名,datediff(yy,cast(出生年月asdatetime),'1985')as年龄,性别,部门名as所在部门from员工表,部门表where员工表.所在部门号=部门表.部门号and员工号=@员工号)goselect*fromdbo.F2_自定义函数('2001')3、设计多语句表值函数usexmglgocreatefunctionF3_自定义函数(@部门名char(10))returns@员工参与项目情况表table(员工号char(4),姓名char(8),项目名称char(20),参加的项目总数int)asbegindeclare@员工号char(4),@姓名char(8),@参加的项目总数int--定义游标declare员工参与项目_游标cursorforselect员工号,姓名,参加的项目总数from员工表,部门表where员工表.所在部门号=部门表.部门号and部门名=@部门名open员工参与项目_游标fetchnextfrom员工参与项目_游标into@员工号,@姓名,@参加的项目总数while@@fetch_status=0begin--将当前职工参与的项目情况返回表insert员工参与项目_游标select员工表.员工号,姓名,项目名称,参加的项目总数from员工表,项目表,员工参与项目表where员工表.员工号=员工参与项目表.员工号and员工参与项目表.项目编号=项目表.项目编号and员工表.员工号=@员工号--插入该职工参与项目的总数insertinto@员工参与项目情况表(员工号,姓名,参加的项目总数)values(@员工号,@姓名,@参加的项目总数)fetchnextfrom员工参与项目_游标into@员工号,@姓名,@参加的项目总数endclose员工参与项目_游标deallocate员工参与项目_游标returnendgoselect*fromdbo.F3_自定义函数('销售部')注:每学期至少有一次设计性实验。每学期结束请任课老师按时按量统一交到教学秘书处。四、实验小结通过本实验,学会了创建自定义函数,并且调用。在实验过程中,对各语句还不是很熟,不是很好的能写出来,但通过查阅课本最终还是解决了。在创建自定义函数时,既可以用对象资源管理器也可以用查询语句,其中要掌握各个步骤,按套路就可以创建,在调用的时候特别不要忘了“go”,不然就无法调用。五、教师评价年月日