定义
游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有一个名字。用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理。
实例
- DECLARE STU_CUR1 CURSOR
- FOR
- SELECT * FROM STUDENT
- DECLARE STU_CUR SCROLL CURSOR
- FOR
- SELECT SNO,SNAME,SAGE,SGENTLE,SDEPT
- FROM STUDENT
- WHERE SDEPT='计算机'
- ORDER BY SNO DESC
- --FOR READ ONLY
- deallocate stu_cur--删除游标
- SET STATISTICS IO ON
- set cursor_close_on_commit off--可以用set cursor_close_on_commit off 来保持游标是一直打开的,除非你手动关闭
- OPEN STU_CUR
- SET NOCOUNT ON
- FETCH NEXT FROM STU_CUR--提取下一条数据,如果是第一次提取数据,提取出来的是第一条数据
- WHILE @@FETCH_STATUS=0
- BEGIN
- FETCH NEXT FROM STU_CUR
- --FETCH ABSOLUTE 2 FROM STU_CUR--提取数据中的第二行
- END
- --FETCH PRIOR FROM STU_CUR--提取前一条数据
- --FETCH FIRST FROM STU_CUR--提取第一条数据
- --FETCH LAST FROM STU_CUR--提取最后一条数据
- --不管是更新还是删除它们所用到的数据都是从FETCH中得到的所以它们前面必须要有FETCH语句
- --使用游标更新数据
- UPDATE STUDENT SET SAGE=20 WHERE CURRENT OF STU_CUR
- --使用游标删除数据
- DELETE FROM STUDENT WHERE CURRENT OF STU_CUR
- CLOSE STU_CUR
- select * from STUDENT
- SELECT * FROM TEMPDB
- --将游标变量与游标关联起来
- DECLARE @SC CURSOR
- SET @SC = CURSOR
- FOR SELECT * FROM STUDENT
本文转自sucre03 51CTO博客,原文链接:http://blog.51cto.com/sucre/420262,如需转载请自行联系原作者