什么是游标

1.游标的概念

游标是指向查询结果集的一个指针,它是一个通过定义语句与一条Select语句相关联的一组SQL语句。游标包含两方面的内容:

●游标结果集:执行其中的Select语句所得到的结果集;

●游标位置:一个指向游标结果集内的某一条记录的指针

利用游标可以单独操纵结果集中的每一行。游标在定义以后存在两种状态:关闭和打开。当游标关闭时,其查询结果集不存在;只有当游标打开时,才能按行读取或修改结果集中的数据。

2.使用游标

一个应用程序可以使用两种类型的游标:前端(客户)游标和后端(服务器)游标,它们是两个不同的概念。

无论使用哪一种游标,都需要经过如下几个步骤:

●定义游标

●打开游标

●从游标中操作数据

●关闭游标

下面讲述的是后端(服务器)游标。

(1)定义游标

在使用游标之前必须声明它。声明指定定义游标结果集的查询。通过使用for update或for read only关键词将游标显式定义成可更新的或只读的。

Declare cursor语法为:

For select_statement

[for{read only|update[of colum_name_list]}]

举例:

declare pubs_crsr cursor

for select pub_name,city,state

from publishers

for update of city,state

(2)打开游标

open的语法为:

open 游标名

在声明游标后,必须打开它以便用fetch,update,delete读取、修改、删除行。在打开一个游标后,它将被放在游标结果集的首行前,必须用fetch语句访问该首行。

(3)从游标中读取数据

在声明并打开一个游标后,可用fetch命令从游标结果集中获取数据行。

Fetch的语法为:

Fetch 游标名[into 变量列表]

举例:fetch pub_crsr into @name,@city,@state

SQL Server在每次读取后返回一个状态值。可用@@sqlstatus访问该值,下表给出了可能的@@sqlstatus值及其意义。

值意 义

0Fetch语句成功

1Fetch语句导致一错误

2结果集没有更多的数据,当前位置位于结果集最后一行,而客户对该游标仍发出Fetch语句时。

若游标是可更新的,可用update和delete语句来更新和删除行。

删除游标当前行的语法为:

delete[from]表名

where current of 游标名

举例:delete from authors where current of authors_crsr

当游标删除一行后,SQL Server将游标置于被删除行的前一行上。

更新游标当前行的语法为:

update 表名

set column_name1={expression1|NULL|(select_statement)}

[,column_name2={expression2|NULL|(select_statement)}

[……]

where current of 游标名

举例:

update publishers

set city=”asadena”,state=”CA”

where current of pubs_crsr

(4)关闭游标

当结束一个游标结果集时,可用close关闭。该语法为:

close 游标名

关闭游标并不改变其定义,可用open再次打开。若想放弃游标,必须使用deallocate释放它,deallocater的语法为:

deallocater cursor 游标名

deallocater语句通知SQL Server释放Declare语句使用的共享内存,不再允许另一进程在其上执行Open操作。

时间: 2024-08-19 01:26:01

什么是游标的相关文章

ResultSet 游标权限获取问题

当我们在写数据库连接的时候,有时候回出现一些错误如: java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY 先看下面一段代码 /** *//**     * 连接数据库用的驱动类型     */    protected final String driver = "org.gjt.mm.mysql.Driver";    /** *//**     * 数据库URL     */    protec

PL/SQL游标(原创)

游标的相关概念及特性定义映射在结果集中某一行数据的具体位置,类似于C语言中的指针.即通过游标方式定位到结果集中某个特定的行,然后根据业务需求对该行进行相应特定的操作.游标的分类显示游标:即用户自定义游标,专门用于处理select语句返回的多行数据隐式游标:系统自动定义的游标,记录集只有单行数据,用于处理select into 和DML语句游标使用的一般过程:显示游标:声明, 打开, 读取, 关闭隐式游标:直接使用读取,声明.打开.关闭都是系统自动进行的显示游标的过程描述a.声明游标CURSOR

访问XML数据的三中基于树模型||基于游标||流式API比较

xml|比较|访问|数据|游标 无处不在的 XML 除了可以表示结构化和半结构化的数据之外,XML 还有许多其他特性,使其成为一种被广泛采用的数据表示格式.XML 是可扩展的,与平台无关的,并且由于其完全采用 Unicode 而支持国际化.XML 是基于文本的格式,因此,用户可以根据需要使用标准的文本编辑工具读取和编辑 XML 文档. XML 的可扩展性表现在多个方面.首先,与 HTML 不同,XML 没有固定的词汇表.相反,用户可以使用 XML 定义特定的应用程序或行业专用的词汇表.其次,与使

微软SQL Server数据库的两种请求游标

[IT168 技术]游标(cursor)是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果.每个游标区都有一个名字.用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理. 关系数据库中的操作会对整个行集起作用.由 SELECT 语句返回的行集包括满足该语句的 WHERE 子句中条件的所有行.这种由语句返回的完整行集称为结果集.应用程序,特别是交互式联机应用程序,并不总能将整个结果集作为一个单元来有效地处理.这些应用程序需要一种机制以便每次处理一行或一部分行.游标就

SQL Server游标实例演示不得不看

以下的文章主要描述的是SQL Server游标实例,假如你在实际操作中遇SQL Server游标实例,但是你却不知道对其如何正确应用,那么以下的文章对你而言一定是良师益友,希望会给你带来一些帮助在此方面. SQL Server游标实例: Declare MyCusror Cursor Scroll     For Select * From Master_Goods Order By GoodsID     Open MyCursor     Fetch next From MyCursor  

SQL Server 中 自定义函数 和 游标 应用的经典案例

server|函数|游标     这是网友的问题,我当时立马给出了自己的解决方案,但是没有想到中间有点小问题,发现后经过自己仔细调试,完全得到正确结果后,那个网友已经结帖了.我的代码遂成为鸡肋,食之无味,弃之可惜.但是我觉得我的代码确实还是挺经典的,所以整理了一下,供各位网友欣赏.问题:  假设环境如下:     表1:      ID, NAME,      QQ,     PHONE, 表中数据:      1       秦云        10102800 13500000       

SQL Server 2000游标使用方法

server|游标 游标使用方法:use db1declare my_cursor cursor scroll dynamic /*scroll表示可随意移动游标指针(否则只能向前),dynamic表示可以读写游标(否则游标只读)*/forselect 姓名 from 个人资料 open my_cursordeclare @name sysnamefetch next from my_cursor into @namewhile(@@fetch_status=0)  begin    print

Oracle 9i 游标

  游标是从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中的数据进行各种操作,然后将操作结果写回数据表中. 定义游标     游标作为一种数据类型,首先必须进行定义,其语法如下.    cursor 游标名 is select 语句;    cursor是定义游标的关键词,select是建立游标的数据表查询命令.    以scott用户连接数据库,在[SQLPlus Worksheet]中执行

使用系统过程管理游标

  在建立一个游标之后,便可利用系统过程对游标进行管理管理,游标的系统过程主要有以下几个:sp_cursor_list.sp_describe_cursor. sp_describe_cursor_tables .sp_describe_cursor_columns.   各系统过程的具体含义分别为: 13.8.1 sp_cursor_list    显示在当前作用域内的游标及其属性:其命令格式为:    例13-11: 从下面的例子校琳吣芄惶寤岣孟低彻痰木咛迨褂梅椒ā?br> 提示:由于s

游标的应用

   在前面几节,我们详细介绍了如何声明游标,从游标中读取数据以及关闭.释放游标的方法.下面我们将给出几个应用实例使读者对游标有更为全面的了解. 13.7.1 游标变量的应用    我们已经提到游标是从MS SQL SERVER 7 版本才开始使用的新的变量类型,游标常被应用在存储过程.触发器中.那么游标是如何被作为变量而应用呢?看一下系统过程sp_cursor_list 的SQL 语句文本,会大有收获.    在该存储过程中,@cursor_return 为一游标变量,并将其结果集返回给其调用