学习视频:
链接:http://pan.baidu.com/s/1jGlQyDg 密码:hnes
从数据库把符合条件的数据检测出来,并逐条显示
优点:
1、允许定位到结果集的特定行
2、从结果集的当前位置检索一行或多行
3、支持对结果集中当前行进行数据的修改
4、为用户对数据库中数据修改提供不同级别的可见性支持
5、提供脚本、触发器、存储过程查询的T-SQL语句
游标定义格式:
Declare 游标名 [Insensitive] Cursor
[Local|Global] (定义为局部游标或全局游标)
[Forward_only|Scroll](定义游标为只进游标或上下调整,即位置可以随便跳)
[Static|Keyset|Dynamic|Fast_forward] (keyset为键集驱动游标)
[Readonly|Scroll_Locks|Optimisitic]
[Type_warning]
For SQL语句
[For[Read Only|Update]] (只读游标或更新游标)
--创建游标
use Mydatabase
declare testCursorA cursor scroll for --(for后面表示的是执行的T-SQL语句)
select *from 网站职员表
for read only
--使用游标
open testCursorA
fetch next from testCursorA --(每点一次执行,结果逐条显示下一条)
fetch first from testCursorA --(直接跳转到第一条)
fetch last from testCursorA --(直接跳转到最后一条)
fetch prior from testCursorC --(从后往前读取)
fetch absolute 8 from testCursorC --(直接跳到第8条记录)(绝对位置)
fetch relative 3 from testCursorA --(以当前位置为原点向后跳3条)(相对位置)
fetch relative -3 from testCursorA --(向前跳3条)(相对位置)
print @@fetch_status
--创建游标实例
use Mydatabase
declare testCursorB cursor scroll for
select *from 网站职员表
--调用游标
declare @testVar1 int, @testVar2 nvarchar(20),@testVar3 int,@testVar4 varchar(20),@testVar5 varchar
(1000),@testVar6 money
open testCursorB
fetch absolute 3 from testCursorB into @testVar1,@testVar2,@testVar3,@testVar4,@testVar5,@testVar6
print '第一个字段为:'+cast(@testVar1 as varchar(20))
print '第二个字段为:'+@testVar2
print '第三个字段为:'+cast(@testVar3 as varchar(20))
print '第四个字段为:'+@testVar4
print '第五个字段为:'+cast(@testVar5 as varchar(100))
print '第六个字段为:'+cast(@testVar6 as varchar(100))
--第二种输出方式:
select @testVar1 as 职员编号,@testVar2 as 职员姓名,@testVar3 as 年龄,@testVar4 as 毕业院校,@testVar5
as 家庭住址,@testVar6 as 工资
--关闭游标(关闭后还可重新打开)
close testCursorA
--释放游标(释放后不可重新打开)
deallocate testCursorA