游标

意义

个人理解是,游标能依次获得一个表的所有项,每次检查一项。利用游标,就不需要自己费时费力地一个个检查,就能快速检查表内是否有问题或者及时更新数据

语法

  • declare 游标名 cursor for
  • select语句
  • open 游标名
  • fetch 游标名 into 变量
  • 嵌入式sql语句
  • close 游标名
  • dellocate 游标名
  • end

解释

第二行的select语句,是声明游标的内容。游标可以粗暴的理解为最多只有一行的视图,类容就是select查询得到的。每次执行依次fetch,游标就会把信息替换为select结果中的下一行,同时把原数据丢给into后面的变量

当游标把select遍历一遍以后,系统提供的一个变量:@@fetch_status就会变为1

举例

  1. create or alter procedure check_boys
  2. as
  3. begin
  4. declare @a int
  5. declare @b int
  6. declare a_cursor cursor for
  7. select no,grade from student where sex='male'
  8. open a_cursor
  9. fetch a_cursor into into @a,@b
  10. when(@@fetch_status=0)
  11. begin
  12. if (@b>60)
  13. update student set status='Y' where no=@a
  14. else
  15. update student set status='N' where no=@a
  16. fetch next from a_cursor into @a,@b
  17. end
  18. close a_cursor
  19. dellocate a_cursor
  20. end
  21. check_boys

游标一般用在嵌入式sql语句类。这个事务借助游标,检查了所有男生的成绩。

第10行,检查@@fetch_status,检查游标是否向变量传递了数据。当这个数值变为1,说明游标没有给变量传递数据,说明表已经遍历完,则结束程序。

16行,如果没有这一句,那么给ab赋的值永远是第一行的值

因为没参数,所以调用时直接写事务名,见20行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值