SQL Server—游标(是什么?声明、打开、检索、关闭、释放)

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 是一种数据访问机制,它允许用户单独的操作数据行,而不是对整个行集进行操作。用户可以通过单独处理每一行逐条手机信息并对数据逐行进行操作,这样可以降低系统开销和潜在的阻隔情况。用户也可以使用这些数据生成SQL代码并立即执行或输出

游标是什么?


是一种数据访问机制,它允许用户单独的操作数据行,而不是对整个行集进行操作。用户可以通过单独处理每一行逐条手机信息并对数据逐行进行操作,这样可以降低系统开销和潜在的阻隔情况。用户也可以使用这些数据生成SQL代码并立即执行或输出


可以把游标当成一个指针,它可以随意移动到指定的行,允许用户对指定位置数据进行处理

游标包括哪些部分?


  • 游标结果集:由定义游标的select语句返回的行的集合
  • 游标位置:指向这个结果集中的某一行的指针


游标有什么特点?


  • 返回一个完整的结果集,但允许程序设计语言只调用集合中的一行
  • 允许定位在结果集的特定行
  • 从结果集的当前位置检索一行或多行
  • 支持对结果集中当前位置的行进行数据修改
  • 可以为其他用户对显示在结果集中的数据库数据所做的更改提供不同级别的可见性支持
  • 提供脚本、存储过程、触发器中使用的访问结果集中数据的T-SQL语句


如何创建一个游标呢?


第一步、声明游标

--声明student_cursor游标,scroll指定可以获取任意数据行
declare student_cursor scroll cursor
for


第二步、查询语句


--查询student表中的所有信息
select * from student


第三步、声明游标类型


--声明游标类型为只读型
for read only


如果操作一个完整的游标我们可以怎么做呢?需要有哪些步骤呢?


操作游标的四个步骤?

   

 20200512195846400.png                


声明    declare


打开   open


检索   fetch(first,last,next,prior,absolute行数)


关闭   close


需求:执行一个完整的游标过程


数据表如下图:


    20200512202440322.png          


第一步、声明


declare stu_cursor scroll cursor      --声明
for
select sname from student             --查询语句


第二步、打开


open stu_cursor


第三步、检索


declare @name varchar(10)          --声明变量@name
fetch first from stu_cursor        --检索游标里面的第一行数据
into @name
print @name                        --打印值


执行的效果是什么样的呢?


     20200512200816900.png                    


如果想要看其他行的呢?


fetch first from stu_cursor           --检索游标
fetch last from stu_cursor            --检索最后一行
fetch next from stu_cursor            --检索下一行
fetch absolute 3 from stu_cursor        --检索第3个位置的值


第四步、关闭

close stu_cursor


第五步、释放

deallocate stu_cursor


如何判断游标的提取状态?


0  fetch   语句成功


-1 fetch  语句失败或行不在结果集中


-2 提取的行不存在


关闭游标就可以了为什么还要释放呢?他们有什么区别?


关闭游标:关闭当前游标的运行,要用的时候打开就可以直接使用了


释放游标:将游标占用的资源释放了,如果还想用游标,就必须重新建立


总结:游标就是我们平常学的指针,它可以随意的移动到指定的行

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
111 13
|
4月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
4月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
60 6
|
4月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
371 1
|
3月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
470 0
|
4月前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
305 3
|
4月前
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。
|
4月前
|
SQL 存储 关系型数据库
关系型数据库SQL Server学习
【7月更文挑战第4天】
77 2
|
5月前
|
SQL 存储 测试技术