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

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

        先来个前辈的脚印: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 2014-03-06 19:03  水语者9  阅读(339)  评论(0编辑  收藏  举报