一般情况下游标的使用应遵循以下5个步骤:
1. 声明游标
2. 打开游标
3. 从游标读取行,并有选择地进行处理
4. 关闭游标
5. 释放游标
use pubs
/*声明变量*/
declare @title varchar(100),@price smallmobey
/*声明游标*/
declare price——cursor for
select title,price
from titles
where price<15
/*打开游标*/
open price cursor
/*获取数据并进行处理*/
fetch from price_cursor
into @title,@price
while @@fetch_status=0
begin
print @title+' '+convert(char(6),@price)+'$'
fetch next from price_cursor
into @title,@price
end
/*关闭游标*/
close price——cursor
/*释放游标*/
deallocate price_cursor
go
获取数据并进行处理
fetch语句用于从结果几集中获取一行数据。
fetch from cursor_name
他表示获取结果集中的当前行
fetch next from price_cursor
fetch prior from price_cursor
first和last分别表示获取第一条和最后一条数据
如果想获取数据存入变量,可以使用into选项。
fetch from price_cursor
into @title,@price
如果返回0,表示fetch语句成功,如果返回-1,表示fetch语句失败,如果返回-2,表示被提取的行不存在。
例如
游标使用方法:
use db1
declare my_cursor cursor scroll dynamic /*scroll表示可随意移动游标指针(否则只能向前),dynamic表示可以读写游标(否则游标只读)*/
for
select 姓名 from 个人资料
open my_cursor
declare @name sysname
fetch next from my_cursor into @name
while(@@fetch_status=0)
begin
print '姓名: ' + @name
fetch next from my_cursor into @name
end
fetch first from my_cursor into @name
print @name
/* update 个人资料 set 姓名='zzg' where current of my_cursor */
/* delete from 个人资料 where current of my_cursor */
close my_cursor
deallocate my_cursor