SQL server 游标
原文章地址:https://blog.csdn.net/love2zq/article/details/108511291
声明游标:说明游标的时候并不执行select语句。
declare <游标名> cursor for <select语句>;
打开游标:打开游标实际上是执行相应的select语句,把查询结果读取到缓冲区中。这时候游标处于活动状态,指针指向查询结果集的第一条纪录。
open <游标名>;
推进游标指针并读取当前纪录:
用fetch语句把游标指针向前推进一条纪录,同时将缓冲区中的当前纪录读取出来送到变量中。fetch语句通常用在一个循环结构体中,通过循环执行fetch语句逐条取出结果集中的行进行处理。现在好多数据库中,还允许任意方向任意步长易懂游标指针,而不仅仅是把游标指针向前推进一行了。
fetch <游标名> into <变量1>,<变量2>...
关闭游标:
用close语句关闭游标,释放结果集占用的缓冲区及其他资源。游标关闭后,就不再和原来的查询结果集相联系。但游标可以再次打开,与新的查询结果相联系。
close <游标名>;
-- 声明游标
DECLARE Indexs CURSOR FAST_FORWARD FOR
SELECT *
FROM #Temp_Indexs
---游标遍历临时表获取主键名
OPEN Indexs;
-- 取第一条记录
FETCH NEXT FROM Indexs INTO @Index;
WHILE @@FETCH_STATUS=0
BEGIN
If @ICount = 0 ---当 If @ICount = 0 时 只有一条数据取 join 条件为 on a.x=b.x
BEGIN
Set @ConditionSql = ' d1.' + @Index + '= d3.' + @Index
Set @TypeSql = 'd3.' + @Index
END
Else
BEGIN Set @ConditionSql = ' AND d1.' + @Index + '= d3.' + @Index END
---当 If @ICount <> 0 时 取第一条数据取 join 条件为 on a.x=b.x 第二条是为 and a.y=b.y
-- 取下一条记录
FETCH NEXT FROM Indexs INTO @Index;
-- 操作
Set @ICount = @ICount +1 --计数,方便判断取第几条数据
END
-- 关闭游标
CLOSE Indexs;
-- 释放游标
DEALLOCATE Indexs
分类:
SQL Server
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)