怀着惴惴不安的心情,想看看游标到底是什么玩意儿。曾经想钻研一番,后被告知使用游标效率比较低(真假待定),并且自己真心没用到,
遂作罢。不料后来被问到,各种坑,八百年不用的东西拿出来问人,怪自己太嫩,进正题吧。
先来个前辈的脚印:http://www.cnblogs.com/zijinguang/archive/2007/12/17/1003281.html
http://www.cnblogs.com/knowledgesea/p/3699851.html (今天新找的一篇)
其实有上面这篇文章已经够了,还是自己练练吧。
Cursor:(游标/光标等)看了前人的解释,我的理解是,把查询结果放到内存中,使用游标就可以逐行访问记录,类似于for循环(汗!不知是否恰当。)
使用步骤:(前辈总结得很到位,照抄啦)
1.声明游标
2.打开游标
3.使用游标
4.关闭游标
FETCH(小写:fetch):取得。使用游标的关键字。
DEALLOCATE(小写:deallocate):释放,解除分配。删除游标的关键字。
删除游标:deallocate stuCursor
在网上又找了一个比较好的链接,对游标的使用说明得比较详细。
自己创建的时候,如下语句却不能使用:
fetch prior from stuCursor --读取上一条数据
fetch first from stuCursor --读取第一条数据
fetch last from stuCursor --读取最后一条数据
检查后才发现,是因为创建游标的时候,默认的是向前的(forward_only)
declare <游标名> cursor forward_only/scroll/local/global/static/dynamic/read_only for <select语句>
如果定义成这样的:declare stuCursor cursor scroll 就可以正常使用上面那些语句了。
还有类似这样的应用:fetch relative -1 from stuCursor。表示向后移动,也比较方便。注意和absolute区别,很好理解,类似绝对定位,回到开头和结尾。
获取游标结果的行数:select '行数'=@@cursor_rows
给出截图,看着舒服:
按照上面的链接,给出一个练习吧!
游标应用举例,在基本表SC中创建一个游标,查看第一个学生的成绩信息,若成绩低于60则改为60。
update操作:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报