随笔 - 130  文章 - 1  评论 - 16  阅读 - 12万 

         怀着惴惴不安的心情,想看看游标到底是什么玩意儿。曾经想钻研一番,后被告知使用游标效率比较低(真假待定),并且自己真心没用到,

   遂作罢。不料后来被问到,各种坑,八百年不用的东西拿出来问人,怪自己太嫩,进正题吧。

        先来个前辈的脚印: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

          在网上又找了一个比较好的链接,对游标的使用说明得比较详细。

          http://wenku.baidu.com/link?url=HrJwtCuvAzDg5UKErtjY3dSTVUBsELiZSf11y6UY8xo4WLISGxRL2NHyVROaS-GM35Cs1xdy1c0FjytomyBSyCi3obGC9ni6AjGN3_b5TbW

       自己创建的时候,如下语句却不能使用:

        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操作:

      

 

 

 

posted on   水语者9  阅读(339)  评论(0编辑  收藏  举报
编辑推荐:
· 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月简报
点击右上角即可分享
微信分享提示