实验12函数、游标的创建和使用
一、实验目的:
1.理解批处理、脚本的概念,掌握T-SQL的流程控制语句及编程方法。
2.理解并掌握函数应用。
3.学会正确使用游标。
二、实验环境:
Windows XP 系统、SQL Server 2005
三、实验内容:
1.在“学生成绩管理数据库: STDB”中创建“计算平均分”标量函数。在该函数中创建输入参数“@学号”和“@姓名”,以便查询不同学生的成绩平均分。调用该函数并查看执行结果。
2.在“学生成绩管理系统”数据库中创建一个函数,该函数可返回某个学生或全部学生的学号,姓名,班级,课程名称,成绩,学分。调用该函数并查看执行结果。
3.建立一个游标,利用游标显示“学生成绩管理系统”数据中学生信息表中的数据。
四、实验过程:
- 1.在“学生成绩管理系统”数据库中创建“计算平均分”标量函数。在该函数中创建输入参数“@学号”和“@姓名”,以便查询不同学生的成绩平均分。调用该函数并查看执行结果。
use STDB; go /* 定义一个标量函数,即返回单值的函数*/ create function 计算平均分(@学号 varchar(8),@姓名 varchar(12)) returns int begin declare @平均分 int select @平均分=avg(grade) from s as a join sc as b on a.sno=b.sno where a.sno=@学号 and sname=@姓名 return @平均分 end go select dbo.计算平均分('1001','李勇') as 平均分
- 2.在“学生成绩管理数据库:STDB”中创建一个函数,该函数可返回某个学生或全部学生的学号,姓名,课程名称,成绩,学分
use STDB; go /*定义一个返回表值的函数*/ create function 各科成绩(@学号 varchar(8)=null) returns @表 table(学号 varchar(8),姓名 varchar(12),课程名称 varchar(20),成绩 int,学分 int) as begin if @学号 is null begin insert into @表 select s.sno,s.sname,c.cname,sc.grade,c.ccredit from s join sc on s.sno=sc.sno join c on sc.cno=c.cno end else insert into @表 select S.sno,S.SNAME,CNAME,GRADE,CCREDIT from S join sc on S.sno=Sc.sno join C on SC.CNO=c.CNO where S.sno=@学号 return --返回 end go select * from 各科成绩('1002') select * from 各科成绩(default)
- 建立一个游标,利用游标显示“学生成绩管理数据库:STDB”中学生信息表中的数据。
USE STDB; Go /*定义局部变量*/ declare @学号 char(10),@姓名 varchar(8),@性别 char(2),@年龄 int,@系 varchar(30) /* 定义游标*/ DECLARE 学生数据 CURSOR FOR SELECT * FROM S /* 打开游标*/ OPEN 学生数据 /* 通过Fetch命令读游标中的数据,并存入指定的局部变量中*/ FETCH NEXT from 学生数据 into @学号,@姓名,@性别,@年龄,@系 /* 通过While循环,逐条输出游标中的记录*/ WHILE @@FETCH_STATUS = 0 BEGIN print cast(@学号 as char(15))+cast(@姓名 as char(10))+cast(@性别 as char(6))+cast(@年龄 as char(6))+cast(@系 as char(10)) FETCH NEXT from 学生数据 into @学号,@姓名,@性别,@年龄,@系 END /*关闭游标*/ CLOSE 学生数据 /* 释放游标所用的内存*/ DEALLOCATE 学生数据
总结
通过本次实验,对函数和游标有了一个初步的认识,掌握了基本的操作。希望课下通过自己努力,将它应用到我的期末数据库设计大作业上,呈现一个亮点。