sql 2008 R2 函数游标的创建和使用

Posted 宝山的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 2008 R2 函数游标的创建和使用相关的知识,希望对你有一定的参考价值。

实验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 学生数据 
    
    

总结

通过本次实验,对函数和游标有了一个初步的认识,掌握了基本的操作。希望课下通过自己努力,将它应用到我的期末数据库设计大作业上,呈现一个亮点。

以上是关于sql 2008 R2 函数游标的创建和使用的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2008r2 提交性能问题

sql server 2008r2的tempdb很大怎么办

如何实现 sql2008 和 sql2012 共存?

在 SQL Server 2008 R2 中计算平均值的窗口函数

使用 VBS (SQL DMO) 创建 SQL Server 2008 R2 数据库时出错

SQL Server 2008R2 用户定义函数(表值)性能