大型数据库期末试题以及答案(4)
修改:
alter function 名称
([{@参数名称 参数类型[=默认值]}[,n]]) returns @局部变量 table [with encryption] [as] begin 函数体
return 函数返回值 end
删除:drop function 函数名
一、创建标量用户定义函数
1、在学生信息管理系统中,学生信息表包含列“学号”、列“姓名”;课程信息表包含列“课程代号”、“课程名称”;学生成绩表包含列“学号”、列“课程代号”、列“成绩”,已用约束保证成绩的范围为0~100分。
编写标量函数fn_StudentScore,要求:输入一个学号和一个课程号,返回这个学生这门课的成绩,如果此学生没有选这门课,返回-1。
CREATE FUNCTION fn_StudentScore (@stu_id char(8) ,@course_id char(3)) returns int as begin
declare @a int
set @a=(select score from score
where stu_id=@stu_id and course_id=@course_id)
if @a is null begin
set @a=-1
end return @a end
2、测试函数fn_StudentScore(选两个例子,一个显示成绩,一个显示-1)
declare @score int
exec @score = fn_StudentScore @stu_id='0601009' ,@course_id='009' select @score as 成绩
declare @score int
exec @score = fn_StudentScore @stu_id='0601002' ,@course_id='009' select @score as成绩
3、在学生信息管理系统中,学生信息表包含列“学号”、列“姓名”;课程信
息表包含列“课程代号”、“课程名称”;学生成绩表包含列“学号”、列“课程代号”、列“成绩”,已用约束保证成绩的范围为0~100分。
编写用户定义函数fn_EvaluateOneStudent,要求:每次输入一个学号,计算该学生的所有课程的平均分,如果是85~100分,返回“优”;如果是75~84分,返回“良”;如果是65~74分,返回“中”;如果是0~64分,返回“差”。
CREATE FUNCTION fn_EvaluateOneStudent (@学号 char(8))
RETURNS varchar(10) AS
BEGIN
DECLARE @平均分 integer, @等级 varchar(10)
SELECT @平均分=AVG(score)FROM score WHERE stu_id=@学号 IF @平均分 BETWEEN 85 AND 100 SET @等级='优' ELSE
IF @平均分 BETWEEN 75 AND 84 SET @等级='良'
ELSE IF @平均分 BETWEEN 65 AND 74 SET @等级='中'
ELSE IF @平均分 BETWEEN 0 AND 64 SET @等级='差' RETURN @等级
END
4、测试函数fn_EvaluateOneStudent
例如:判断学号为0601002、0601006、0601009的同学的等级。
declare @等级 varchar(10),@学号 char(8) set @学号= '0601002'
exec @等级= fn_EvaluateOneStudent @学号=@学号 select @学号 as 学号,@等级 as 等级
二、创建多语句表值函数
1、在学生信息管理系统中,学生信息表包含列“学号”、列“姓名”;课程信息表包含列“课程代号”、“课程名称”;学生成绩表包含列“学号”、列“课程代号”、列“成绩”,已用约束保证成绩的范围为0~100分。
编写多语句表值函数fn_SexStudent,要求:当性别是“男”,返回男生表,性别是“女”,返回女生表,否则显示所有学生信息。 CREATE FUNCTION fn_SexStudent (@性别 varchar(8))
RETURNS @sexstudent table
( stu_id char(8) primary key,
stu_name char(10), stu_sex char(2),
stu_birthday smalldatetime
)
AS begin
if @性别='男'
insert @sexstudent select * from student where stu_sex='男'
else if @性别='女'
insert @sexstudent select * from student where stu_sex='女'
else
insert @sexstudent select * from student
return end
2、测试函数fn_SexStudent
select * from dbo.fn_SexStudent('女') select * from dbo.fn_SexStudent('男') select * from dbo.fn_SexStudent('全部')
三、创建内嵌表值函数
1、在学生信息管理系统中,学生信息表包含列“学号”、列“姓名”;课程信息表包含列“课程代号”、“课程名称”;学生成绩表包含列“学号”、列“课程代号”、列“成绩”,已用约束保证成绩的范围为0~100分。
编写内嵌表值函数fn_PassStudent,要求:每次输入一个课程号,返回及格(大于等于60分)的学生学号,姓名,本课程的名称和分数。 CREATE FUNCTION fn_PassStudent (@课程号 varchar(8))
RETURNS TABLE AS
RETURN (
SELECT a. stu_id,stu_name ,course_name, score FROM student AS a
INNER JOIN score AS b
ON a. stu_id =b. stu_id
INNER JOIN course AS c
ON b. course_id =c. course_id
WHERE b. course_id= @课程号 and score>=60 )
2、测试函数fn_PassStudent
select * from fn_PassStudent('005')
控制流:http://www.cnblogs.com/kissdodog/archive/2013/03/10/2953232.html 1、
…… 此处隐藏:852字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [实用模板]第八章:法国“新浪潮”与“左岸派”
- [实用模板]2021年北京上半年临床医学检验技师生物
- [实用模板]SAP GUI 7.10客户端安装配置文档
- [实用模板]2001年临床执业医师资格考试综合笔试试
- [实用模板]36机场工作实用英语词汇总结
- [实用模板](一)社会保险稽核通知书
- [实用模板]安全教育主题班会材料
- [实用模板]濉溪县春季呼吸道传染病防控应急演练方
- [实用模板]长沙房地产市场周报(1.30-2.3)
- [实用模板]六年级数学上册典中点 - 图文
- [实用模板]C程序设计(红皮书)习题官方参考答案
- [实用模板]中国证监会第一届创业板发行审核委员会
- [实用模板]桥梁工程复习题
- [实用模板]2011学而思数学及答案
- [实用模板]初中病句修改专项练习
- [实用模板]监理学习知识1 - 图文
- [实用模板]小机灵杯四年级试题
- [实用模板]国贸专业毕业论文模板
- [实用模板]教育学概论考试练习题-判断题4
- [实用模板]2015届高考英语一轮复习精品资料(译林
- 00Nkmhe_市场营销学工商管理_电子商务_
- 事业单位考试法律常识
- 诚信教育实施方案
- 吉大小天鹅食品安全检测箱方案(高中低
- 房地产销售培训资料
- 高一地理必修1复习提纲
- 新概念英语第二册lesson_1_练习题
- 证券公司内部培训资料
- 小学英语时间介词专项练习
- 新世纪英语专业综合教程(第二版)第1册U
- 【新课标】浙教版最新2018年八年级数学
- 工程建设管理纲要
- 外研版 必修一Module 4 A Social Surve
- Adobe认证考试 AE复习资料
- 基于H.264AVC与AVS标准的帧内预测技术
- 《食品检验机构资质认定管理办法》(质
- ABB变频器培训课件
- (完整版)小学说明文阅读练习题及答案
- 深思洛克(SenseLock) 深思IV,深思4,深
- 弟子规全文带拼音




