游标(Cursor)是指向查询结果集的一个指针,它是一个通过定义语句和一条SELECT语句相关联的一组SQL语句。游标使用户可逐行访问SQL
Server返回的结果集。
游标包含两方面的内容 :
(1)游标结果集:执行其中的SELECT语句返回的结果集。
(2)游标位置:一个指向游标结果集内的某一条记录的指针。
声明游标格式:
DECLARE 游标名称 [INSENSITIVE] [SCROLL] CURSOR
[LOCAL][GLOBAL]
FOR SELECT 语句
[FOR {READ ONLY|UPDATE[OF 字段名[,.........N]]}]
其中INSENSITIVE选项说明,定义游标时系统将在tempdb数据库中创建一个临时表,存储该游标使用的数据
(1)LOCAL|GLOBAL:用于指定该游标的作用域是局部的还是全局的。
(2)SCROLL:所定义的游标的数据提取操作可以使用一下选项:
①FRIST:指出游标中的第一行数据。
②NEXT:读取游标中当前位置中的下一行数据。
③PRIOR:读取游标中当前位置中的上一行数据。
④LAST:读取游标中最后一行数据。
⑤RELATIVE(N):读取游标中当前位置之后的第n行数据。
⑥ABSOLUTE(N):读取游标中第n行数据。
(3)READ ONLY:当前所定义的游标为只读游标,禁止通过对该游标进行更新数据。
(4)UPDATE:可以通过游标修改基表中的数据。
【例】查询出所有女生的信息作为结果集,并为该结果集说明只读的游标。
DECLARE student_cursor CURSOR
FOR
SELECT * FROM dbo.student where ssex='女'
FOR READ ONLY
打开游标
打开游标声明格式:
OPEN 游标名称
当用OPEN语句打开了游标并在数据库中执行了查询后,不能立即利用在查询结果集中的数据,必须用FETCH语句来取数据,一条FETCH语句一次可以将一条记录放入程序员指定的变量中。
OPEN student_cursor
FETCH NEXT FROM student_cursor
WHILE @@fetch_status = 0
BEGIN
FETCH NEXT FROM student_cursor
END
游标函数
(1)@@CURSOR_ROWS
返回连接上最后打开的游标中当前存在的合格行的数量。为提高性能,Microsoft® SQL
Server™ 可以异步填充大键集和静态游标。可调用 @@CURSOR_ROWS,以确定当它被调用时,符合游标的行的数目被进行了检索。
返回值
|
描述
|
-m
|
游标被异步填充。返回值 (-m) 是键集中当前的行数。
|
-1
|
游标为动态。因为动态游标可反映所有更改,所以符合游标的行数不断变化。因而永远不能确定地说所有符合条件的行均已检索到。
|
0
|
没有被打开的游标,没有符合最后打开的游标的行,或最后打开的游标已被关闭或被释放。
|
n
|
游标已完全填充。返回值 (n) 是在游标中的总行数。
|
(2)@@CURSOR_STATUS
这是一个标量函数,该函数允许存储过程的调用方确定针对一个给定参数,该过程是否返回游标和结果集。
语法
CURSOR_STATUS
(
{ 'local' ,
'cursor_name' }
| { 'global' , 'cursor_name' }
| {
'variable' , 'cursor_variable' }
)
参数
'local' 指定一个常量,该常量表明游标的源是一个本地游标名。
'cursor_name' 游标名。游标名必须符合标识符的规则。
'global' 指定一个常量,该常量表明游标的源是一个全局游标名。
'variable' 指定一个常量,该常量表明游标的源是一个本地变量。
'cursor_variable' 游标变量的名称。必须使用 cursor 数据类型定义游标变量。
返回类型 smallint
返回值
|
游标名
|
游标变量
|
1
|
游标的结果集至少有一行,并且:
对于不感知游标和键集游标,结果集至少有一行。
对于动态游标,结果集可以有零行、一行或多行。
|
分配给该变量的游标已经打开,并且:
对于不感知游标和键集游标,结果集至少有一行。
对于动态游标,结果集可以有零行、一行或多行。
|
0
|
游标的结果集为空。*
|
分配给该变量的游标已经打开,然而结果集肯定为空。*
|
-1
|
游标被关闭。
|
分配给该变量的游标被关闭。
|
-2
|
不可用。
|
可以是:
先前调用的过程并没有将游标指派给 OUTPUT 变量。
先前调用的过程给 OUTPUT 变量指派了游标,然而在过程结束时,游标处于关闭状态。因此,游标被释放,并且没有返回给调用过程。
没有将游标指派给已声明的游标变量。
|
-3
|
带有指定名称的游标不存在。
|
带有指定名称的游标变量并不存在,或者即使存在这样一个游标变量,但并没有给它分配游标。
|
(3)@@FETCH_STATUS
返回被 FETCH 语句执行的最后游标的状态,而不是任何当前被连接打开的游标的状态。
返回值
|
描述
|
0
|
FETCH 语句成功。
|
-1
|
FETCH 语句失败或此行不在结果集中。
|
-2
|
被提取的行不存在。
|
关闭游标
CLOSE
游标名称
释放游标
DELLOCATE 游标名称
关闭的游标机构本身也占有一定的计算机资源,如果确定某个游标不再使用,可及时的将该游标释放
分享到:
相关推荐
SQL Server 编程基础 - T-SQL 游标 T-SQL 游标是 SQL Server 中的一种重要概念,提供了一种对从表中检索出的数据进行操作的灵活手段。游标是一种能从包含多条数据记录的结果集中每次提取一条记录的机制,用户可以...
T-SQL 程序设计与游标设计 T-SQL 程序设计是数据库系统原理实验三的主要内容之一,它包括变量、流程控制命令、其他命令和常用函数四部分。 变量是 T-SQL 程序设计中的重要组成部分,有两种变量:局部变量和全局...
**T-SQL游标** 虽然在处理大量数据时通常避免使用,但T-SQL中的游标允许按行处理结果集,逐行执行操作,这对于某些特定场景非常有用。 **TSQLREF.CHI和TSQLREF.CHM** "TSQLREF.CHI"和"TSQLREF.CHM"这两个文件名...
《Inside Microsoft SQL Server 2008 T-SQL Programming》这本书深入探讨了SQL Server 2008中的T-SQL编程技术,这是SQL Server数据库管理与开发的核心语言。T-SQL,即Transact-SQL,是SQL的一个扩展,主要用于微软的...
《Microsoft SQL Server 2008技术内幕:T-SQL查询》是一本深入探讨SQL Server 2008中T-SQL(Transact-SQL)查询的权威书籍。T-SQL是SQL Server数据库管理系统的核心语言,用于数据操作、查询、存储过程编写以及...
《Microsoft SQL Server 2008技术内幕:T-SQL查询》是一本深入探讨SQL Server 2008中T-SQL(Transact-SQL)查询的权威指南。T-SQL是微软SQL Server数据库管理系统的核心语言,用于数据操作、查询、存储过程编写以及...
这些内容只是T-SQL的冰山一角,通过阅读提供的用户指南和参考手册,你可以深入到更多细节,比如动态SQL、游标、XML操作、窗口函数、分区函数等,从而成为一个精通T-SQL的数据库专家。无论是数据库设计、数据处理还是...
《Microsoft SQL Server 2005技术内幕:T-SQL查询的源代码》是一本深入探讨SQL Server 2005中T-SQL查询技术的专业书籍。T-SQL(Transact-SQL)是Microsoft SQL Server数据库管理系统中用于数据操作、查询、存储过程...
不过,我可以根据标题和描述提供的信息,以及对SQL Server 2008和T-SQL语言基础知识的理解,为您构建一份关于Microsoft SQL Server 2008中T-SQL语言基础知识的知识点概要。 Microsoft SQL Server 2008是微软公司...
PRINT '游标中的第-2行[相对地址]:' + @value; -- 填充数据. FETCH PRIOR FROM c_test_main INTO @id, @value; PRINT '游标中的上一行:' + @value; -- 填充数据. FETCH NEXT FROM c_test_main INTO @id, @...
T-SQL,全称Transact-SQL,是微软SQL Server数据库管理系统中使用的SQL方言,它扩展了标准SQL的功能,提供了数据库交互、数据操纵和程序编写的能力。本资源“T-SQL示例大全”是一个非常宝贵的参考资料,对于学习和...
- 游标是T-SQL中处理结果集的重要工具,它允许逐行处理查询结果。通过游标,开发者可以对查询结果进行迭代,从而实现逐行处理数据的需求。 T-SQL在SQL Server管理与设计实现中的角色至关重要,因为图形界面工具并...
9. **游标**:虽然在SQL Server中推荐使用集束操作,但T-SQL仍然提供了游标,允许逐行处理查询结果。 10. **窗口函数**:SQL Server 2012引入了窗口函数,如RANK(), DENSE_RANK(), ROW_NUMBER(), LAG(), LEAD(), ...
《SQL SERVER 2008 T-SQL基础》是一本由微软出版社出版的书籍,主要针对SQL Server 2008中的Transact-SQL(T-SQL)语言进行深入浅出的讲解。T-SQL是SQL Server的核心组件,用于数据查询、数据操纵、存储过程编写以及...
本篇将深入探讨T-Sql编程中的核心概念,包括触发器、游标、储存过程和函数,这些都是构建高效数据库应用程序的基础。 一、T-SQL编程基础 T-SQL是微软SQL Server的扩展SQL,它提供了更多的编程功能和控制结构,使得...
### SQL Server T-SQL 关键知识点解析 #### 一、SQL Server T-SQL 概述 - **定义**:T-SQL(Transact-SQL)是Microsoft SQL Server 的专有扩展语言,它基于标准的SQL语言,并添加了额外的功能来支持数据库编程。 - ...
在数据库领域,T-SQL(Transact-SQL)是Microsoft SQL Server所使用的扩展的SQL语言。这个特定的题目要求我们使用T-SQL来实现一个功能,即打印杨辉三角。杨辉三角,又称为帕斯卡三角,是数学中一个非常重要的概念,...
T-SQL,全称Transact-SQL,是SQL Server数据库管理系统中用于数据操作和查询的编程语言。它是标准SQL的扩展,增加了许多特有的功能,使得它在处理复杂的数据操作和数据库对象管理上更为强大。本资源是专为SQL Server...
《Microsoft SQL Server 2005技术内幕:T-SQL程序设计》这本书深入探讨了SQL Server 2005中的Transact-SQL(T-SQL)编程技术,这是数据库管理和开发的重要组成部分。T-SQL是SQL Server的标准查询语言,用于执行数据...