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

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 是一种数据访问机制,它允许用户单独的操作数据行,而不是对整个行集进行操作。用户可以通过单独处理每一行逐条手机信息并对数据逐行进行操作,这样可以降低系统开销和潜在的阻隔情况。用户也可以使用这些数据生成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 提取的行不存在


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


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


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


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

相关文章
|
11月前
|
SQL 存储 人工智能
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
Vanna 是一个开源的 Python RAG(Retrieval-Augmented Generation)框架,能够基于大型语言模型(LLMs)为数据库生成精确的 SQL 查询。Vanna 支持多种 LLMs、向量数据库和 SQL 数据库,提供高准确性查询,同时确保数据库内容安全私密,不外泄。
1629 7
Vanna:开源 AI 检索生成框架,自动生成精确的 SQL 查询
|
11月前
|
SQL 数据挖掘 数据库
SQL自学笔记(2):如何用SQL做简单的检索
本文深入介绍了SQL的基本语法,包括数据查询、过滤、排序、分组及表连接等操作,并通过实际案例展示了SQL在用户研究中的应用,如用户行为分析、用户细分、用户留存分析及满意度调查数据分析。
197 0
SQL自学笔记(2):如何用SQL做简单的检索
|
关系型数据库 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)")
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
524 13
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
344 9
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
243 6
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
1156 3
|
存储 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) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
1154 1
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。
|
SQL 存储 关系型数据库
关系型数据库SQL Server学习
【7月更文挑战第4天】
234 2
下一篇
oss云网关配置