昆明理工大学数据库实验四

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

昆明理工大学信息工程与自动化学院学生实验报告

(2013 —2014 学年第一学期)

SQL之游标操作

课程名称:数据库开课实验室:系机房445 2013 年12 月 3日

年级、专业、班物联网111 学号201110410130 姓名杨国锋成绩

实验项目名称SQL DDL 操作指导教师贾连印

教师评语该同学是否了解实验内容与要求:A.了解□ B.基本了解□ C.不了解□

该同学的实验能力: A.强□ B.中等□ C.差□

该同学的实验是否达到要求: A.达到□ B.基本达到□ C.未达到□

实验报告是否规范: A.规范□ B.基本规范□ C.不规范□

是否有运行结果与分析: A.详细□ B.一般□ C.没有□

是否有总结与体会: A.详细□ B.一般□ C.没有□

教师签名:贾连印 2013年 12 月 3 日

一、实验的目的

1、掌握使用游标的基本步骤。

2、熟悉卷游标的使用

3、学习用游标解决实际问题

4、了解SQL的流程控制

教师关系T(T#, TNAME,TITLE)

课程关系C(C#,CNAME,T#)

学生关系S(S#,SNAME,AGE,SEX)

选课关系SC(S#,C#,SCORE)

二、实验内容与要求

在实验1、2创建的S、SC、C、T四个基本表的基础上,编写以下游标:1.实现一个游标,顺序读取并打印所有学生的学号、课程号、成绩信息,读取过程中删除S5的选课记录,并将为空的成绩修改为60分。

提示:编写过程中,可需参阅联机丛书获取下列内容的具体用法

1、声明变量可用declare,为变量赋值用set

2、需要判断可用if语句,如if内需执行多条语句,可用begin 和

end 来限定if作用的范围

3、可通过while循环来依次读取所有记录,读取状态可用

@@FETCH_STATUS获取

4、如游标已创建,但执行过程中出错。导致重新执行时提示游标

已存在,可用cursor_status来检查是否存在该游标,如存在,则先deallocate 2.实现一个卷游标,逆序打印所有学生的学号、课程号、成绩信息

三、实验主要步骤(要求包括每一步的sql语句,要求主要步骤有执行结果截

图,截图方法:可按住ALT键不放,同时按下PrtSc键)

基础知识:

游标也可以看作是一个表中的记录指针,该指针与某个查询结果相联系。在某一时刻,该指针只指向一条记录,即游标是通过移动指向记录的指针来处理数据的。当用户在SQL Server Management Studio中浏览记录时,总有一条记录的前面有一个黑色的三角标识,该标识就好像是一个记录指针。

游标通过以下方式来扩展结果处理:

1) 允许定位在结果集的特定行

2) 从结果集的当前位置检索一行或一部分行

3) 支持对结果集中当前位置的行进行数据修改

4) 存储过程和触发器中用于访问结果集中的数据的T-SQL语句

游标的基本操作:

--定义游标命令

declare demo1cursor for select*from c for read only;

--打开游标命令

open demo1;

--执行游标命令

fetch next from demo1;

--关闭游标命令

close demo1;

--删除游标命令

deallocate demo1;

fetch next from demo1; 每次执行一次数据

第一题:

--打印所有学生的学号、课程号、成绩信息

select*from SC;

--游标

--定义游标

declare@s#char(6),@c#char(6),@score int--定义变量

declare SCCUR cursor for select*from sc;--声明游标

open SCCUR

FETCH NEXT FROM SCCUR

into@s#,@c#,@score

while@@FETCH_STATUS=0

begin

if(@score is null)

begin

print'学号:'+@s#+' 课程号:'+@c#+' 成绩:'+'空'

end

else

print'学号:'+@s#+'课程号:'+@c#+'成绩:'+cast(@score as char(5))-- 类型转化

fetch next from sccur

into@s#,@c#,@score

end

CLOSE SCCUR

deallocate SCCUR

用游标查看整个表中的数据

下面删除s5的选课记录,并把成绩为空的的成绩修改为60

declare@s#char(6),@c#char(6),@score int--定义变量

declare SCCUR cursor for select*from sc;--声明游标

open SCCUR

FETCH NEXT FROM SCCUR

into@s#,@c#,@score

while@@FETCH_STATUS=0

begin

if(@score is null)

begin

set@score=60

相关文档
最新文档