首页 > 代码库 > Sql Server系列:游标

Sql Server系列:游标

1. 游标简介

  游标是一种处理数据的方法,主要用于存储过程、触发器和Transact-SQL脚本中。SELECT语句返回的是一个结果集,游标能够从包含多条数据记录的结果集中每次提取一条记录。

  游标的特点:

  ◊ 允许对由SELECT查询语句返回的行集中的每一行执行相同或者不同的操作,而不是对整个集合执行同一个操作。

  ◊ 提供对基于游标位置的表中的行进行删除和更新。

2. 游标的基本操作

2.1 声明游标

  声明游标语法:

ISO SyntaxDECLARE cursor_name [ INSENSITIVE ] [ SCROLL ] CURSOR      FOR select_statement      [ FOR { READ ONLY | UPDATE [ OF column_name [ ,...n ] ] } ][;]Transact-SQL Extended SyntaxDECLARE cursor_name CURSOR [ LOCAL | GLOBAL ]      [ FORWARD_ONLY | SCROLL ]      [ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]      [ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]      [ TYPE_WARNING ]      FOR select_statement      [ FOR UPDATE [ OF column_name [ ,...n ] ] ][;]

2.2 打开游标

  在使用游标之前,必须打开游标。打开游标的语法格式:

OPEN { { [ GLOBAL ] cursor_name } | cursor_variable_name }

2.3 读取游标中的数据

  打开游标之后,可以读取游标中的数据。FETCH用来读取游标中的某一行数据。FETCH语句的语法格式:

FETCH           [ [ NEXT | PRIOR | FIRST | LAST                     | ABSOLUTE { n | @nvar }                     | RELATIVE { n | @nvar }                ]                FROM           ] { { [ GLOBAL ] cursor_name } | @cursor_variable_name } [ INTO @variable_name [ ,...n ] ] 

2.4 关闭游标

  在不使用游标的时候,可以将其关闭,以释放游标所占用的服务器资源。关闭游标CLOSE语法格式:

CLOSE { { [ GLOBAL ] cursor_name } | cursor_variable_name }

2.5 释放游标

  游标操作的结果集空间虽然被释放了,但是游标结构本身也会占用一定的资源,所以在使用完游标之后,为了收回被游标占用的资源,应该讲游标释放。释放游标DEALLOCATE语法格式:

DEALLOCATE { { [ GLOBAL ] cursor_name } | @cursor_variable_name }

 

Sql Server系列:游标