游标学习【鸡蛋】

游标操作的六步骤:
 ◆在每次在创建游标的时候都问问自己,用什么别的方法可以避免使用游标,那么你就步如设计的正规了.
    1.声明
    2.打开
    3.应用/操作
    4.关闭.
    5.释放
      声明游标的基本语法如下:
      Declare <cursor name> cursor
      For <select statement>

  

案例1: MySchool

if exists(select*from sysobjectswherename='cursc')

    drop proc cursc

Go

create procedure cursc

as

declare

       @question varchar(210),        --我们必须声明变量来存放得到的记录

       @a varchar(50),

       @b varchar(50),

       @c varchar(50),

       @d varchar(50),

       @answer varchar(50),

       @num int

 

declare MyCursor cursor  --声明我们的游标

Global --全局游标的范围还有一个是局部(Local)

for select question,OptionA,OptionB,OptionC,OptionD,Answerfrom question  --对应的SQL语句后面打开游标就是打开

 

set @num=1--设置标量表示游标的移动

 

open MyCursor --打开我们的游标这实际执行了For从句的主体查询,但我们仍然没有将数据

             --放在合适的位置进行合适的处理,因此我们需要处理一组事情.

                                                --1.获取第一条理路或者Fetch

                                                     --2.根据需要,循环剩余记录

    fetch next from MyCursor into @question,@a,@b,@c,@d,@answer

    --首先生成第一条Fetch(提取)--该命令说明了希望提取一条特定的的记录,得到的记录由变量接受

 

    print ''+cast(@numasvarchar)+'个问题:'+'  答案A'+@a+'  答案B'+@b+'  答案C'+@c+'  答案D'+@d++'  正确答案是'+@answer

    --对得到的记录进行对应操作(第一次) --如果忘了再这里进行操作那么会少操作一行数据

 

while (@@fetch_status=0) --@@fetch_status全局变量,每次提取一行,该变量就更新一次

 

                      --并告诉我们提取工作进展到了哪一步.他可能值为以下项

                      --□  0:提取成功,一切进展顺利    ||语句成功

                      --□ -1:提取失败或此行不在结果集中,超出了游标中的最后一行(或在第一行之前)  ||Fetch语句失败或行不在结果集中

                      --□ -2:提取失败,被提取的行不存在,因为记录丢失(不是循环到了末尾,而是因为在游标打开时已经删除了该记录)   ||提取的行不存在

    begin 

       select @num=@num+1  

       fetch next from MyCursor into @question,@a,@b,@c,@d,@answer

       --上面的fetch进行操作一行数据 那么循环也要进行操作记住有次fetch2次操作语句块

 

       print ''+cast(@numasvarchar)+'个问题:'+'  答案A'+@a+'  答案B'+@b+'  答案C'+@c+'  答案D'+@d++'  正确答案是'+@answer         

      

    end

close MyCursor       --关闭游标

deallocate MyCursor  --释放游标

 

 

基本操作上面案例已经很清楚了


http://blog.csdn.net/chenweitang123/article/details/5588968

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值