/*************************
 第十三单元 创建与使用游标
**************************/
/*
 知识点学习
 1、游标的概念
 2、游标的功能(定位、查询、修改)
 3、游标的类型
 3、使用游标的基本步骤
*/
/*
 任务一、创建基本游标
  
 语法格式:
 DECLARE 游标名 CURSOR
 FOR SQL语句
 [FOR {READ ONLY | UPDATE [字段列表]}]
*/
--1. 针对Student表,创建游标cs_Student,查询班级号为20000002的学生数据。
DECLARE cs_Student CURSOR
FOR 
  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 INT
SET @RecNo=0
CLOSE cs_Student --关闭游标
OPEN cs_Student --打开游标
FETCH NEXT FROM cs_Student INTO @StuNo, @ClassNo, @StuName, @Pwd
WHILE @@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 INT
SET @RecNo=0
SET @TargetNo=5
CLOSE cs_Student --关闭游标
OPEN cs_Student --打开游标
FETCH NEXT FROM cs_Student INTO @StuNo, @ClassNo, @StuName, @Pwd
WHILE @@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=
   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 INT
SET @RecNo=0
CLOSE cs_Student --关闭游标
OPEN cs_Student --打开游标
FETCH NEXT FROM cs_Student INTO @StuNo, @ClassNo, @StuName, @Pwd
WHILE @@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

数据库笔记13:创建与使用游标相关推荐

  1. Oracle数据库笔记(基于oracle数据库的PLSQL编程以及存储过程的创建和使用)

    PLSQL编程 概念和目的 程序结构 Hello World 变量普通变量 引用型变量 记录型变量 流程控制 条件分支 循环 游标 什么是游标 语法 游标的属性 创建和使用 带参数的游标 存储过程 概 ...

  2. 【数据库学习笔记】——创建数据库文件

    目录 1.数据库基础知识 2.创建数据库文件 1.数据库基础知识 什么是数据库?--数据库是存放多个数据表的仓库,数据表可以理解为是二维数组 如上表所示,每个表由行列组成: 字段:每一列称之为一个字段 ...

  3. 数据库笔记05:创建与管理数据库

    /****************************  第五单元:创建与管理数据库 *****************************/ /* 任务:创建数据库friend,包含两个数据 ...

  4. 【数据库笔记】高性能MySQL:chapter 5 创建高性能的索引

    文章目录 前置知识 5.0 引言 5.1 索引基础 1. 索引的类型 B-Tree 索引 哈希索引 空间数据索引(R-Tree) 全文索引 5.2 索引基础 5.3 高性能的索引策略 1. 独立的列 ...

  5. 数据库笔记: SQL

    1 数据库语言 DBMS提供操作命令和语言,使用户能够对数据库进行各式各样的操作,例如查询.增.删.改数据,定义.修改数据模式等 --- >这就构成了用户和数据库的接口. DBMS所提供的语言一 ...

  6. mybatis学习笔记(13)-延迟加载

    2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(13)-延迟加载 标签: mybatis [TOC] resultMap可以实现高级映射(使用asso ...

  7. 计算机三级数据库笔记

    今天出分 优秀哈哈. 计算机三级数据库第一套题 一.选择题 应用服务器从数据库服务器接收数据并返回给客户端. 关系模型是静态稳定的,关系是动态的,随用户操作变化. 设计人机界面可采用原型迭代法,首先进 ...

  8. 数据库笔记(4)SQL练习题及Python与数据库交互

    一.数据的准备 1.1创建数据表 --创建"京东"数据库 create database jing_dong charset=utf8; --使用"京东"数据库 ...

  9. pythonsqlite3如何建数据库_python sqlite3创建数据库

    Python标准库14 数据库 (sqlite3) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python自带一个轻量级的关 ...

最新文章

  1. Java消息服务JMS详解
  2. python 简化连锁比较 pycharm提示Simplify chained comparison
  3. 前端大神用React刻了一个Windows XP
  4. 游戏开发攻略—黑杰克扑克牌
  5. socket编程的select模型
  6. SpringBoot入门:新一代Java模板引擎Thymeleaf(实践)
  7. spring+ibatis配置
  8. no value specified for java.sql.date,求助No value specified for parameter 2
  9. 数据结构实践项目——图的基本运算及遍历操作
  10. 阿里云盘内测_阿里云盘内测邀请码发放!30MB/s的下载速度
  11. revit2016与2017区别_revit2017下载及新功能介绍
  12. 图像识别与人工智能的联系
  13. 公共服务中,人脸识别的三类风险隐患与安全防护
  14. c语言求绝对值作业,C语言求绝对值
  15. [P1919 【模板】A*B Problem升级版(FFT快速傅里叶)(高精乘板子,FFT板子)
  16. python中turtle库基本函数
  17. P1551 亲戚 (并查集)
  18. FPGA之VGA转HDMI之并行串行转换模块编写
  19. jQuery 实现弹幕效果案例
  20. PHP返回凌晨好早晨好中午好下午好等

热门文章

  1. 前端工具webpack4.0各个击破——html部分
  2. android 内凹的圆角,css实现内凹圆角,利用圆角反向进行(转)
  3. fatal: could not read Username for 'https://github.com': No such file or directory
  4. html引入css webpack_深入剖析webpack——webpack 基础
  5. java.util.PropertyPermission“ “org.graalvm.nativeimage.imagecode“ “read“
  6. 版本对应关系python TensorFlow+Keras
  7. 计算机图形学E7——OpenGL 交互式三角形裁剪直线
  8. html item 左右滑动,拖动Html元素集合 Drag and Drop any item
  9. 电脑安装python3.74_在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
  10. 例子---PHP与Form表单终结篇