WEB开发网
开发学院数据库MSSQL Server sqlserver游标概念与实例全面解说 阅读

sqlserver游标概念与实例全面解说

 2010-03-31 00:00:00 来源:WEB开发网   
核心提示: Declare mycursor cursor for select * from AddSalary这样我就对表AddSalary申明了一个游标mycursor【高级备注】DECLARE <游标名> [INSENSITIVE] [SCROLL] CURSORFOR<SELEC

Declare mycursor cursor for select * from AddSalary

这样我就对表AddSalary申明了一个游标mycursor

【高级备注】

DECLARE <游标名> [INSENSITIVE] [SCROLL] CURSORFOR<SELECT语句>

这里我说一下游标中级应用中的[INSENSITIVE]和[SCROLL]

INSENSITIVE

表明MS SQL SERVER 会将游标定义所选取出来的数据记录存放在一临时表内(建立在tempdb 数据库下)。对该游标的读取操作皆由临时表来应答。因此,对基本表的修改并不影响游标提取的数据,即游标不会随着基本表内容的改变而改变,同时也无法通过游标来更新基本表。如果不使用该保留字,那么对基本表的更新、删除都会反映到游标中。

另外应该指出,当遇到以下情况发生时,游标将自动设定INSENSITIVE 选项。

a.在SELECT 语句中使用DISTINCT、 GROUP BY、 HAVING UNION 语句;

b.使用OUTER JOIN;

c.所选取的任意表没有索引;

d.将实数值当作选取的列。

SCROLL

表明所有的提取操作(如FIRST、 LAST、 PRIOR、 NEXT、 RELATIVE、 ABSOLUTE)都可用。如果不使用该保留字,那么只能进行NEXT 提取操作。由此可见,SCROLL 极大地增加了提取数据的灵活性,可以随意读取结果集中的任一行数据记录,而不必关闭再

重开游标。

1.3.2 打开游标

非常简单,我们就打开刚才我们声明的游标mycursor

OPEN mycursor

1.3.3读取数据

FETCH [ NEXT | PRIOR | FIRST | LAST] FROM { 游标名  | @游标变量名 } [ INTO @变量名 [,…] ]

参数说明:

NEXT   取下一行的数据,并把下一行作为当前行(递增)。由于打开游标后,行指针是指向该游标第1行之前,所以第一次执行FETCH NEXT操作将取得游标集中的第1行数据。NEXT为默认的游标提取选项。

上一页  1 2 3 4 5  下一页

Tags:sqlserver 游标 概念

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接