您的位置:首页 > 数据库

数据库笔记13:创建与使用游标

2018-03-05 21:26 225 查看
/************************* 第十三单元 创建与使用游标**************************/
/* 知识点学习
 1、游标的概念 2、游标的功能(定位、查询、修改) 3、游标的类型 3、使用游标的基本步骤*//* 任务一、创建基本游标   语法格式: DECLARE 游标名 CURSOR FOR SQL语句 [FOR {READ ONLY | UPDATE [字段列表]}]*/
--1. 针对Student表,创建游标cs_Student,查询班级号为20000002的学生数据。
DECLARE cs_Student CURSORFOR   SELECT *   FROM Student   WHERE ClassNo='20000002'
  --2. 使用OPEN语句打开游标cs_Student
OPEN cs_Student --记录指针在BOF(Beginning Of File)
--3. 使用FETCH语句从游标获取数据 /*   语法格式:   FETCH [NEXT | PRIOR | FIRST | LAST]   FROM 游标名   [INTO 变量列表] */
--(1) 查询游标cs_Student的第1行数据
FETCH NEXT FROM cs_Student
--通过全局变量@fetch_status了解游标查询是否成功PRINT @@fetch_status --返回0:成功;返回-1或-2:失败
--(2) 查询游标cs_Student的第5行数据--分析:有没有一条语句用于移动游标的记录指针?
DECLARE @StuNo NVARCHAR(8), @ClassNo NVARCHAR(8), @StuName NVARCHAR(10), @Pwd NVARCHAR(8)DECLARE @RecNo INTSET @RecNo=0CLOSE cs_Student --关闭游标OPEN cs_Student --打开游标FETCH NEXT FROM cs_Student INTO @StuNo, @ClassNo, @StuName, @PwdWHILE @@fetch_status=0  BEGIN    SET @RecNo=@RecNo+1    IF (@RecNo=5)      BREAK;    FETCH NEXT FROM cs_Student INTO @StuNo, @ClassNo, @StuName, @Pwd      END SELECT @StuNo 学号, @ClassNo 班级号, @StuName 姓名, @Pwd 选课密码
--课堂练习,查询游标cs_Student的某行数据,如果查到,则显示,否则提示用户“超出范围!”
DECLARE @StuNo NVARCHAR(8), @ClassNo NVARCHAR(8), @StuName NVARCHAR(10), @Pwd NVARCHAR(8)DECLARE @RecNo INT, @TargetNo INTSET @RecNo=0SET @TargetNo=5CLOSE cs_Student --关闭游标OPEN cs_Student --打开游标FETCH NEXT FROM cs_Student INTO @StuNo, @ClassNo, @StuName, @PwdWHILE @@fetch_status=0  BEGIN    SET @RecNo=@RecNo+1    IF @RecNo=@TargetNo      BREAK;    FETCH NEXT FROM cs_Student INTO @StuNo, @ClassNo, @StuName, @Pwd      END IF @@fetch_status=0    SELECT @StuNo 学号, @ClassNo 班级号, @StuName 姓名, @Pwd 选课密码ELSE   PRINT '超出范围!'
--4. 将当前行的学生选课密码修改为“AAABBBCC” 
UPDATE Student SET Pwd='AAABBBCC' WHERE CURRENT OF cs_Student
--验证:当前行学生的选课密码是否修改成功
--(1)验证原表
SELECT * FROM Student WHERE StuName='李林'
--(2)验证游标
DECLARE @StuNo NVARCHAR(8), @ClassNo NVARCHAR(8), @StuName NVARCHAR(10), @Pwd NVARCHAR(8)DECLARE @RecNo INTSET @RecNo=0CLOSE cs_Student --关闭游标OPEN cs_Student --打开游标FETCH NEXT FROM cs_Student INTO @StuNo, @ClassNo, @StuName, @PwdWHILE @@fetch_status=0  BEGIN    SET @RecNo=@RecNo+1    IF (@RecNo=5)      BREAK;    FETCH NEXT FROM cs_Student INTO @StuNo, @ClassNo, @StuName, @Pwd      END SELECT @StuNo 学号, @ClassNo 班级号, @StuName 姓名, @Pwd 选课密码
--5. 关闭游标cs_Student
CLOSE cs_Student
--6. 释放游标cs_Student
DEALLOCATE cs_Student
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: