SQLServer_第5章 游标

本文详细介绍了SQL中的游标概念及其使用方法,包括客户端游标和服务器端游标,并重点讲解了声明、打开、读取、关闭及释放游标的全过程。同时,还提供了SQL-92标准和T-SQL扩展下的游标声明示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5 游标

游标分为客户端游标和服务器端游标。Sql通过游标可以对一个结果集进行逐行处理。对于使用服务器端游标的过程有:声明à打开à读取à关闭à释放。

5.1 声明游标

5.1.1 SQL92标准的声明

Declare cursor_name [insensitive][scroll] cursor

For select_statement

[for { readonly|update [of column_name[,…n]]}]

Insensitive:使用查询结果的副本

如:

declare xs_cur1 cursor

for

       select* from xs

       where stu_major='计算机'

for read only

5.2 T-SQL扩展的游标声明

Declare cursor_name Cursor

[local | global]                                      /*游标作用域*/

[forward_only | scroll]                        /*游标移动方向*/

[static| keyset | dynamic | fast_forward]   /*游标类型*/

[read_only | scroll_locks | optimistic]   /*访问属性*/

[tupe_warning]                               /*类型转换警告信息*/

For select_statement                                       

[for update [of column_name[,…n]]     /*可修改的列*/

Static:静态游标,只读

Keyset:键集驱动游标,可以通过键集驱动游标修改基本表中非关键字列的值。

dynamic :动态游标

fast_forward:只进游标

declare xs_cur2 cursor

dynamic

for

       select* from xs

       where stu_major='计算机'

 

5.2 打开游标

Open {{[global] cursor_name}| cursor_variable_name}

例子:/*定义游标,然后打开,输出其行数*/

declare xs_cur3 cursor

local scroll scroll_locks

for

select stu_id,stu_name,stu_total_credit    from xs

for update of stu_total_credit

open xs_cur3

select 'the number of rows'=@@cursor_rows

5.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]

如:fetch first from xs_cur2

注意:fetch语句执行的状态保存在全局变量@@Fetch_status中,其值为0,表示执行成功;为-1,表示所要读取的行不在结果集中;为-2,表示被提取的行已经不在(已被删除)。

5.4 关闭游标

Close  {{[global] cursor_name}| cursor_variable_name}

5.5 释放游标

Deallocate {{[global] cursor_name}| cursor_variable_name}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值