diskgenius
硬盘数据恢复基地 门户 数据库 SQLServer 查看内容

MSSQL游标的使用入门

2014-12-22 10:39| 发布者: 八喜| 查看: 2230| 评论: 0|原作者: datahdd

摘要: 游标的理解: 游标其实可以理解成一个定义在特定数据集上的指针,我们可以控制这个指针遍历数据集,或者仅仅是指向特定的行,所以游标是定义在以Select开始的数据集上的 普通的sql语句是面向集合的,游标是面 ...
游标的理解:

游标其实可以理解成一个定义在特定数据集上的指针,我们可以控制这个指针遍历数据集,或者仅仅是指向特定的行,所以游标是定义在以Select开始的数据集上的

普通的sql语句是面向集合的,游标是面向行的。比如我们要取100条数据,通过普通的sql语句是一次取出所有行,而游标是一行一行取出的。

游标的缺点:

在性能上,游标会吃更多的内存,减少可用的并发,占用宽带,锁定资源,当然还有更多的代码量

游标的定义:

游标变量支持两种方式赋值,定义时赋值和先定义后赋值,定义游标变量像定义其他局部变量一样,在游标前加”@”,注意,如果定义全局的游标,只支持定义时直接赋值,并且不能在游标名称前面加“@”,两种定义方式如下

  1. --定义时赋值(支持全局变量)
  2. declare myname cursor for
  3. select * from T


  4. --先定义,后赋值(不支持全局变量)
  5. declare @myname cursor
  6. set @myname=cursor for
  7. select * from T
复制代码


游标的参数:

FORWARD_ONLY(默认)--只能从数据集开始向数据集结束的方向读取,FETCH NEXT是唯一的选项;

SCROLL --支持游标在定义的数据集中向任何方向,或任何位置移动。

游标使用快速入门:

  1. --定义游标
  2. declare myname cursor for
  3. select id,data from T

  4. --打开游标
  5. open myname

  6. --定义需要的参数
  7. declare @id int
  8. declare @data varchar(50)

  9. --获取下一行
  10. fetch next from myname into @id,@data

  11. --打印结果
  12. print @id
  13. print @str

  14. --关闭游标
  15. close myname

  16. --释放游标
  17. deallocate myname
复制代码

开心

鄙视

鼓掌

愤怒

可怜

最新评论

图文热点

寻好东西

论坛精选

返回顶部