MSSQLSERVER数据库- 游标

  游标是属于级行操作,遍历一个表一行一行读,而SQL查询是基于数据集的,在数据量大的时候,使用游标会降低查询速度。这是很明显的。但是有些操作就用游标实现。所以游标又是不或缺少的。我很久都没用游标了,一时我也不记得怎么写,只记得游标操作一般三步。

  1.定义一个游标,将查询的数据放到在这游标中

  2.打开游标

  3.在WHILE里遍历游标,当状态不是0的时候表明没有记录了。

在网上找了个很好的例子,记在这里,以便下次查阅

  

复制代码
--申明一个游标
DECLARE MyCursor CURSOR    FOR SELECT TOP 5 FBookName,FBookCoding FROM TBookInfo
--打开一个游标    
OPEN MyCursor
--循环一个游标
DECLARE @BookName nvarchar(2000),@BookCoding nvarchar(2000)    
FETCH NEXT FROM  MyCursor INTO @BookName,@BookCoding
    WHILE @@FETCH_STATUS =0    
    BEGIN        
        print 'name'+@BookName        
        FETCH NEXT FROM  MyCursor INTO @BookName,@BookCoding    
    END    
--关闭游标
CLOSE MyCursor
--释放资源
DEALLOCATE MyCursor
复制代码

  我还实战了一把,将表里某些指定的数据更新,需要用到SQL语句的判断表是否存这句:

  if exists (select * from sys_boardRight where Account=@Account
     print 'yes';
   else
     print 'no';

 

复制代码
--申明一个游标
DECLARE MyCursor CURSOR FOR SELECT Account from rtx where department like '%集团\春天\%'
--打开一个游标    
OPEN MyCursor
--循环一个游标
DECLARE @Account nvarchar(50) --    

FETCH NEXT FROM  MyCursor INTO @Account
WHILE @@FETCH_STATUS =0    
BEGIN

    if exists (select * from sys_boardRight where Account=@Account) 
        print 'no'
    else
        Insert into sys_boardRight(Account,Rights) values(@Account,2)
    FETCH NEXT FROM  MyCursor INTO @Account
END    
--关闭游标
CLOSE MyCursor
--释放资源
DEALLOCATE MyCursor
复制代码

 

posted @   春天又来了  阅读(1135)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示