SQLserver 中的循环遍历(普通循环和游标循环)
1、普通循环执行SQL
declare @i int --声明 set @i=1 --初始化 while @i<=50 --执行条件 begin exec [dbo].[LineCalendar] @lineId= @i --执行的SQL set @i=@i+1 --执行后变量加1 end
使用游标的顺序: 声名游标、打开游标、读取数据、关闭游标、删除游标。
2、游标循环(没有事务)
---游标循环遍历-- begin declare @a int,@error int declare @temp varchar(50) set @a=1 set @error=0 --申明游标为Uid declare order_cursor cursor for (select [Uid] from Student) --打开游标-- open order_cursor --开始循环游标变量-- fetch next from order_cursor into @temp --判断游标的状态 --0 fetch语句成功 --1 fetch语句失败或此行不在结果集中 --2 被提取的行不存在 while @@FETCH_STATUS = 0 --返回被 FETCH语句执行的最后游标的状态-- begin update Student set Age=15+@a,demo=@a where Uid=@temp set @a=@a+1 set @error= @error + @@ERROR --记录每次运行sql后是否正确,0正确 fetch next from order_cursor into @temp --转到下一个游标,没有会死循环 end close order_cursor --关闭游标 deallocate order_cursor --释放游标 end go
3、游标循环(事务)
---游标循环遍历-- begin declare @a int,@error int declare @temp varchar(50) set @a=1 set @error=0 begin tran --申明事务 --申明游标为Uid declare order_cursor cursor for (select [Uid] from Student) --打开游标-- open order_cursor --开始循环游标变量-- fetch next from order_cursor into @temp while @@FETCH_STATUS = 0 --返回被 FETCH语句执行的最后游标的状态-- begin update Student set Age=20+@a,demo=@a where Uid=@temp set @a=@a+1 set @error= @error + @@ERROR --记录每次运行sql后是否正确,0正确 fetch next from order_cursor into @temp --转到下一个游标 end if @error=0 begin commit tran --提交事务 end else begin rollback tran --回滚事务 end close order_cursor --关闭游标 deallocate order_cursor --释放游标 end go
原文:https://www.cnblogs.com/xielong/p/5941595.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?