zoukankan      html  css  js  c++  java
  • 关于游标的那些事儿

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

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

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

          

  • 相关阅读:
    一文读懂Lua元表
    React-Antd Pro环境搭建
    如何在QT项目中引入Boost库
    .NET Core RSA PKCS8 格式 签名/验签
    Chrome控制台Network请求过滤
    字符串拼接null值问题
    复制文件夹需要考虑的问题
    [闻缺陷则喜]关于boost的想法
    公共库开发组
    docker-compose 一键部署分布式配置中心Apollo
  • 原文地址:https://www.cnblogs.com/hshuai/p/3585112.html
Copyright © 2011-2022 走看看