实验七 游标的使用及存储过程的创建 1, 实验目的
使同学加深对游标概念的理解,掌握游标的定义,使用方法及使用游标修改和删除数据的方法。使学生理解存储过程的概念,掌握创建存储过程的的使用,执行存储过程和查看、修改、删除存储过程的方法 2, 实验内容 (1)、利用游标逐行显示所查询的数据块的内容 (2)、利用游标显示指定行的数据的内容 (3)、利用游标修改和删除指定的数据元组 (4)、创建存储过程 //(5)、修改存储过程 (6)、调用存储过程 (7)、删除存储过程
3、实验步骤-----游标主题
1)在student表中,定义一个包含sno,sname,age,sex,dept的只读游标,游标的名称称为cs_cursor,并将游标中的数据逐条显示出来。
(1)在数据库引擎上查询文档中输入如下代码:
use 学生选课
declare cs_cursor scroll cursor for
select sno,sname,age,sex,dept from student for read only open cs_cursor fetch from cs_cursor (2)单击“执行”按钮,运行结果
(3)接着读取游标中的第二行,在查询编辑器重输入如下语句: fetch from cs_cursor
(4)连续单击“执行”按钮,就可以逐条显示记录 (5)最后关闭游标、释放游标。
注意:游标中定义的参数scroll是说明可以用所有的方法来存取数据,允许删除和更新
Prior,first,last,absolute n,relative n选项只有在定义游标时并使用了scroll选项后才可以使用。其中N是正数时,返回结果集的第N行,若N是负数,则返回结果集倒数第N行
实验内容一:
1) 在student 表中定义一个所在系为“计算机系”,包含sno,sname,sex,age,dept的游标,游
标的名称为cs_cursor,完成如下操作
use zz
declare cs_cursor scroll cursor for
select sno,sname,sage,sdept from student for read only open cs_cursor
A 读取第一行数据
fetch first from cs_cursor
B 读取最后一行数据
fetch last from cs_cursor
C 读取当前行前面的一行数据
fetch prior from cs_cursor
D 读取从游标开始的第二行数据
fetch absolute 2 from cs_cursor E 关闭游标
close cs_cursor
实验内容二:
2) 在student 表中定义一个所在系为“计算机系”,包含sno,sname,sex,age,dept的游标,游
标的名称为cs_cursor,,将游标中绝对位置为2的学生姓名改为“王楠”,性别改为“女”
use zz
declare cs_cursor1 scroll cursor for
select sno,sname,ssex from student
where Sdept='计算机系' for Update of sname,ssex open cs_cursor1
fetch absolute 2 from cs_cursor1
update student
set sname='wann',ssex='nv'
where current of cs_cursor1
fetch absolute 2 from cs_cursor1
实验内容三;
在student 表中定义一个所在系为“计算机系”,包含sno,sname,sex,age,dept的游标,游标的名称为cs_cursor,,将游标中绝对位置为2的学生数据删除 3、实验步骤-----存储过程主题
1)存储过程是一系列编辑好的、能实现特定数据操作功能的SQL代码集,它与特定的数据库相关联,存储在SQL SERVER服务器上。用户可以像使用自定义函数一样重复调用这些存储过程,实现它所定义的操作 (1)、存储过程的类别
存储过程分为3类:系统存储过程、用户自定义存储过程和扩展存储过程 a、 系统存储过程主要存储在master数据库并以sp_为前缀
b、 用户自定义存储过程是由用户创建并能完成某特定功能(如查询用户所需数据信息)的
存储过程。是封装了SQL语句模块。
c、 扩展存储过程允许使用高级编程语言(例如C语言)创建应用程序的外部例程,从而使
得SQL SERVER的实例可以动态地加载和允许DLL
(2)利用SQL SERVER Management Studio模板创建存储过程步骤如下: A、打开SQL SERVER Management Studio窗口,连接到学生选课数据库 B、依次展开节点“服务器”->“数据库” ->“学生选课” ->“可编程性” C、在列表中右击“存储过程命令”,出现新建存储过程,选择“新建存储过程”命令,然后出现CREATE PROCEDURE语句模版。可以修改要创建的存储过程的名称,然后加入存储
过程所包含的Transact-SQL语句
D、修改完后,单击执行按钮即可创建一个存储过程 (3)利用Transact-sql创建存储过程
一般来说,创建一个存储过程应按照以下步骤进行 A、 在查询编辑器窗口输入Transact-sql语句 B、 测试Transact-sql语句是否正确,并能实现功能要求 C、 若得到的结果数据符合预期要求,则按照存储过程的语法,创建改存储过程 D、 执行该存储过程,验证其正确性
存储过程的语法:
Create procedure procedure_name[;number] [@parameter data_type[=default],…] As sql_statement
procedure_name:给出存储过程名
number:为可选的整数,对同名的存储过程指定一个序号 @parameter:为存储过程的形参
例如:在学生选课数据库上,创建一个存储过程,要求实现一下功能:查询每个学生各门功课的成绩,其中包括每个学生的SNO,SNAME,CNAME,GRADE,在查询编辑器输入窗口输入创建存储过程的语句如下: Create procedure student_grade As
Select SNO,SNAME,CNAME,GRADE, From student,course,sc
WHERE student.sno=sc.sno and sc.sno=course.cno
存储过程的修改
实验内容四:
(1) 创建名为proc_exp的存储过程,要求实现如下功能,从sc表中查询某一个学生考试
平均成绩。
(2) 创建名为proc_daa的存储过程,要求实现如下功能:向SC表中添加学生成绩记录。 (3) 调用存储过程proc_daa给SC加记录
(4) 调用proc_exp查询某同学的考试平均成绩 (5) 删除以上创建的存储过程